├── .github ├── FUNDING.yml └── workflows │ └── update.yml ├── .gitignore ├── LICENSE ├── README.md ├── http.txt ├── https.txt ├── index.html ├── proxylist.csv ├── proxylist.json ├── proxylist.phps ├── proxylist.txt ├── proxylist.xml ├── socks4.txt ├── socks5.txt └── static └── script.js /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: vakhov -------------------------------------------------------------------------------- /.github/workflows/update.yml: -------------------------------------------------------------------------------- 1 | name: Get Fresh Proxy 2 | 3 | on: 4 | schedule: 5 | - cron: '*/10 * * * *' 6 | workflow_dispatch: 7 | inputs: 8 | logLevel: 9 | description: 'Log level' 10 | required: true 11 | default: 'info' 12 | type: choice 13 | options: 14 | - info 15 | - warning 16 | - debug 17 | 18 | env: 19 | ACCESS_CODE: ${{ secrets.ACCESS_CODE }} 20 | 21 | jobs: 22 | build: 23 | runs-on: ubuntu-latest 24 | steps: 25 | - uses: actions/checkout@v2 26 | - run: | 27 | curl -H ${{secrets.AUTH}} -s -L ${{secrets.PATH_TEMPLATE}} -o template.md 28 | curl -H ${{secrets.AUTH}} -s -L ${{secrets.PATH_UPDATE}} -o update.sh 29 | chmod +x update.sh 30 | - run: ./update.sh 31 | - run: | 32 | rm template.md update.sh 33 | - run: | 34 | git config user.email ${{ secrets.GIT_EMAIL }} 35 | git config user.name ${{ secrets.GIT_USERNAME }} 36 | git add . 37 | git commit -am "Updated" 38 | - name: Push 39 | uses: ad-m/github-push-action@master 40 | with: 41 | github_token: ${{ secrets.GITHUB_TOKEN }} 42 | env: 43 | CI: true 44 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Alex Vakhov 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Fresh Proxy Lists 2 | 3 | Welcome to **Fresh Proxy List**, a repository dedicated to providing continuously updated and tested lists of proxy servers. 4 | 5 | [![Get Fresh Proxy](https://github.com/vakhov/fresh-proxy-list/actions/workflows/update.yml/badge.svg)](https://github.com/vakhov/fresh-proxy-list/actions/workflows/update.yml) 6 | ![GitHub](https://img.shields.io/github/license/vakhov/fresh-proxy-list) 7 | ![GitHub last commit](https://img.shields.io/github/last-commit/vakhov/fresh-proxy-list) 8 | [![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/vakhov/fresh-proxy-list/graphs/commit-activity) 9 | 10 | Updated at: `Fri Jun 6 11:56:07 UTC 2025` 11 | 12 | ## 🚀 Why Choose Fresh Proxy List? 13 | 14 | - **Frequent Updates**: Stay ahead with a proxy list updated every 5-20 minutes. 15 | - **Reliable Sources**: Only verified and functional proxies. 16 | - **Community-Driven**: Star 🌟 this repo and join the growing community supporting open-access proxy resources. 17 | - **Optimized for Developers**: Easily integrate with your tools and workflows. 18 | 19 | ## 🌟 Show Your Support! 20 | 21 | If you find this project helpful: 22 | - **Give us a star** ⭐ on GitHub. 23 | - **Share** this repo with friends and colleagues. 24 | - Contribute by submitting issues, feedback, or proxy sources. 25 | 26 | ## 💡 Features 27 | 28 | - **Free Proxy List**: Access to HTTP, HTTPS, SOCKS4, and SOCKS5 proxies for various use cases. 29 | - **Fast Proxy Servers**: Ideal for web scraping, bypassing geo-blocks, or online anonymity. 30 | - **Geolocation Support**: Choose proxies from specific regions (coming soon). 31 | - **API Access**: Fetch proxies programmatically with our upcoming API. 32 | - **High Speed**: Regular tests ensure you only use the fastest proxies. 33 | 34 | ## 🛠 How to Use 35 | 36 | Follow the instructions below to download the proxy lists. 37 | 38 | ### Download by Type 39 | 40 | #### HTTP 41 | ```bash 42 | curl -sL https://vakhov.github.io/fresh-proxy-list/http.txt -o http.txt 43 | ``` 44 | 45 | #### HTTPS 46 | ```bash 47 | curl -sL https://vakhov.github.io/fresh-proxy-list/https.txt -o https.txt 48 | ``` 49 | 50 | #### SOCKS4 51 | ```bash 52 | curl -sL https://vakhov.github.io/fresh-proxy-list/socks4.txt -o socks4.txt 53 | ``` 54 | 55 | #### SOCKS5 56 | ```bash 57 | curl -sL https://vakhov.github.io/fresh-proxy-list/socks5.txt -o socks5.txt 58 | ``` 59 | 60 | ### Download by Format 61 | 62 | Supported formats: TXT | CSV | PHP | JSON | XML 63 | 64 | #### Plain Text (TXT) 65 | ```bash 66 | curl -sL https://vakhov.github.io/fresh-proxy-list/proxylist.txt -o proxylist.txt 67 | ``` 68 | 69 | #### CSV 70 | ```bash 71 | curl -sL https://vakhov.github.io/fresh-proxy-list/proxylist.csv -o proxylist.csv 72 | ``` 73 | 74 | #### Serialized PHP Array 75 | ```bash 76 | curl -sL https://vakhov.github.io/fresh-proxy-list/proxylist.phps -o proxylist.phps 77 | ``` 78 | 79 | #### JSON 80 | ```bash 81 | curl -sL https://vakhov.github.io/fresh-proxy-list/proxylist.json -o proxylist.json 82 | ``` 83 | 84 | #### XML 85 | ```bash 86 | curl -sL https://vakhov.github.io/fresh-proxy-list/proxylist.xml -o proxylist.xml 87 | ``` 88 | 89 | ## Usage Examples 90 | 91 | Below are some examples of how you can use these proxy lists in different programming languages. 92 | 93 | ### Use Cases 94 | 95 | - **Best Proxies for Web Scraping**: Easily scrape data from multiple websites without IP bans. 96 | - **Bypass Geo-Blocks**: Access region-locked content using geographically diverse proxies. 97 | - **SEO Tools**: Optimize and analyze website performance from different locations. 98 | 99 |
100 | C# Example (using HttpClient) 101 | 102 | ```csharp 103 | using System; 104 | using System.IO; 105 | using System.Net.Http; 106 | using System.Net; 107 | using System.Threading.Tasks; 108 | 109 | class Program 110 | { 111 | static async Task Main() 112 | { 113 | string[] proxies = File.ReadAllLines("http.txt"); 114 | string proxy = proxies[0]; 115 | string[] proxyParts = proxy.Split(':'); 116 | 117 | var httpClientHandler = new HttpClientHandler() 118 | { 119 | Proxy = new WebProxy(proxyParts[0], int.Parse(proxyParts[1])), 120 | UseProxy = true, 121 | }; 122 | 123 | HttpClient client = new HttpClient(httpClientHandler); 124 | HttpResponseMessage response = await client.GetAsync("http://example.com"); 125 | string content = await response.Content.ReadAsStringAsync(); 126 | Console.WriteLine(content); 127 | } 128 | } 129 | ``` 130 |
131 | 132 |
133 | Go Example 134 | 135 | ```go 136 | package main 137 | 138 | import ( 139 | "bufio" 140 | "fmt" 141 | "net/http" 142 | "net/url" 143 | "os" 144 | "strings" 145 | ) 146 | 147 | func main() { 148 | file, err := os.Open("http.txt") 149 | if err != nil { 150 | panic(err) 151 | } 152 | defer file.Close() 153 | 154 | scanner := bufio.NewScanner(file) 155 | scanner.Scan() 156 | proxyLine := scanner.Text() 157 | proxyURL, err := url.Parse("http://" + proxyLine) 158 | if err != nil { 159 | panic(err) 160 | } 161 | 162 | client := &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(proxyURL)}} 163 | resp, err := client.Get("http://example.com") 164 | if err != nil { 165 | panic(err) 166 | } 167 | defer resp.Body.Close() 168 | 169 | body, err := io.ReadAll(resp.Body) 170 | if err != nil { 171 | panic(err) 172 | } 173 | 174 | fmt.Println(string(body)) 175 | } 176 | ``` 177 |
178 | 179 |
180 | Kotlin Example 181 | 182 | ```kotlin 183 | import java.io.BufferedReader 184 | import java.io.File 185 | import java.net.HttpURLConnection 186 | import java.net.InetSocketAddress 187 | import java.net.Proxy 188 | import java.net.URL 189 | 190 | fun main() { 191 | val proxies = File("http.txt").readLines() 192 | val proxyParts = proxies[0].split(":") 193 | 194 | val proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress(proxyParts[0], proxyParts[1].toInt())) 195 | val url = URL("http://example.com") 196 | val connection = url.openConnection(proxy) as HttpURLConnection 197 | 198 | connection.inputStream.bufferedReader().use(BufferedReader::readText).let { 199 | println(it) 200 | } 201 | } 202 | ``` 203 |
204 | 205 |
206 | Swift Example (using URLSession) 207 | 208 | ```swift 209 | import Foundation 210 | 211 | if let proxyList = try? String(contentsOfFile: "http.txt") { 212 | let proxies = proxyList.components(separatedBy: "\n") 213 | let proxyParts = proxies[0].components(separatedBy: ":") 214 | 215 | let config = URLSessionConfiguration.default 216 | config.connectionProxyDictionary = [ 217 | kCFNetworkProxiesHTTPEnable: true, 218 | kCFNetworkProxiesHTTPProxy: proxyParts[0], 219 | kCFNetworkProxiesHTTPPort: Int(proxyParts[1]) ?? 8080 220 | ] as [String : Any] 221 | 222 | let session = URLSession(configuration: config) 223 | let url = URL(string: "http://example.com")! 224 | 225 | let task = session.dataTask(with: url) { data, response, error in 226 | if let data = data, let responseString = String(data: data, encoding: .utf8) { 227 | print(responseString) 228 | } 229 | } 230 | task.resume() 231 | } 232 | ``` 233 |
234 | 235 |
236 | Swift Example (using Alamofire) 237 | 238 | ```swift 239 | import Alamofire 240 | 241 | if let proxyList = try? String(contentsOfFile: "http.txt") { 242 | let proxies = proxyList.components(separatedBy: "\n") 243 | let proxyParts = proxies[0].components(separatedBy: ":") 244 | 245 | let sessionManager = Session.default 246 | sessionManager.sessionConfiguration.connectionProxyDictionary = [ 247 | kCFNetworkProxiesHTTPEnable: true, 248 | kCFNetworkProxiesHTTPProxy: proxyParts[0], 249 | kCFNetworkProxiesHTTPPort: Int(proxyParts[1]) ?? 8080 250 | ] 251 | 252 | sessionManager.request("http://example.com").responseString { response in 253 | switch response.result { 254 | case .success(let value): 255 | print(value) 256 | case .failure(let error): 257 | print(error) 258 | } 259 | } 260 | } 261 | ``` 262 |
263 | 264 |
265 | Python Example 266 | 267 | ```python 268 | import requests 269 | 270 | with open('http.txt') as file: 271 | proxies = file.readlines() 272 | 273 | proxy = proxies[0].strip() 274 | response = requests.get('http://example.com', proxies={'http': proxy}) 275 | print(response.text) 276 | ``` 277 |
278 | 279 |
280 | JavaScript Example 281 | 282 | ```javascript 283 | const axios = require('axios'); 284 | const fs = require('fs'); 285 | 286 | fs.readFile('http.txt', 'utf8', (err, data) => { 287 | if (err) throw err; 288 | const proxies = data.split('\n'); 289 | const proxy = proxies[0]; 290 | 291 | axios.get('http://example.com', { 292 | proxy: { 293 | host: proxy.split(':')[0], 294 | port: proxy.split(':')[1] 295 | } 296 | }) 297 | .then(response => console.log(response.data)) 298 | .catch(error => console.error(error)); 299 | }); 300 | ``` 301 |
302 | 303 |
304 | Bash Example 305 | 306 | ```bash 307 | proxy=$(head -n 1 http.txt) 308 | curl -x $proxy http://example.com 309 | ``` 310 |
311 | 312 |
313 | PHP Example 314 | 315 | ```php 316 | [ 322 | 'proxy' => 'tcp://' . $proxy, 323 | 'request_fulluri' => true, 324 | ], 325 | ]); 326 | 327 | $response = file_get_contents('http://example.com', false, $context); 328 | echo $response; 329 | ?> 330 | ``` 331 |
332 | 333 |
334 | Ruby Example 335 | 336 | ```ruby 337 | require 'net/http' 338 | 339 | proxies = File.readlines('http.txt') 340 | proxy = proxies[0].strip.split(':') 341 | 342 | uri = URI('http://example.com') 343 | Net::HTTP.start(uri.host, uri.port, proxy[0], proxy[1].to_i) do |http| 344 | request = Net::HTTP::Get.new uri 345 | response = http.request request 346 | puts response.body 347 | end 348 | ``` 349 |
350 | 351 |
352 | Java Example 353 | 354 | ```java 355 | import java.io.*; 356 | import java.net.*; 357 | 358 | public class ProxyExample { 359 | public static void main(String[] args) throws IOException { 360 | BufferedReader reader = new BufferedReader(new FileReader("http.txt")); 361 | String proxyLine = reader.readLine(); 362 | reader.close(); 363 | 364 | String[] proxyParts = proxyLine.split(":"); 365 | String proxyHost = proxyParts[0]; 366 | int proxyPort = Integer.parseInt(proxyParts[1]); 367 | 368 | Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort)); 369 | URL url = new URL("http://example.com"); 370 | HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy); 371 | 372 | BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); 373 | String inputLine; 374 | StringBuilder content = new StringBuilder(); 375 | while ((inputLine = in.readLine()) != null) { 376 | content.append(inputLine); 377 | } 378 | in.close(); 379 | 380 | System.out.println(content.toString()); 381 | } 382 | } 383 | ``` 384 |
385 | 386 | ## 📣 Stay Updated 387 | 388 | - **Join Discussions**: Share your ideas, use cases, or challenges. 389 | - **Follow Updates**: Keep an eye on upcoming features and enhancements. 390 | 391 | ### ⭐ Don't forget to star this repo to show your support and encourage development! 392 | 393 | [![Star this repo](https://img.shields.io/github/stars/vakhov/fresh-proxy-list.svg?style=social)](https://github.com/vakhov/fresh-proxy-list/stargazers) 394 | 395 | ## 🏆 Contributors 396 | 397 | We welcome contributions! Submit a pull request or suggest improvements to make this project even better. 398 | 399 | ## 📢 Spread the Word 400 | 401 | Help us grow this project: 402 | - Tweet about it 🐦 403 | - Mention it in your blog posts 📚 404 | - Recommend it on forums 📢 405 | 406 | ## License 407 | 408 | This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. 409 | 410 | ## Disclaimer 411 | 412 | These listings are provided for informational purposes only. Please use them for viewing purposes only. I do not encourage or support anything illegal or unlawful. 413 | -------------------------------------------------------------------------------- /https.txt: -------------------------------------------------------------------------------- 1 | 160.22.118.27:39023 2 | 185.10.129.14:3128 3 | 200.174.198.86:8888 4 | 208.43.38.57:3128 5 | 5.78.124.240:40001 6 | 88.198.212.91:3128 7 | 89.43.31.134:3128 8 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 11 | 12 | 13 | Fresh Proxy List 14 | 15 | 16 | 17 | 27 | 28 | 104 | 105 | 106 | 107 |
108 |
109 |
110 |
111 |

{{ title }}

112 | View on Github 113 |

Last Updated on {{ lastUpdated | date }}

114 |
115 |
116 |
117 | 119 | 121 | 123 | 125 | 127 | 128 | 129 |
130 |
131 |
132 |
133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 151 | 153 | 154 | 155 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 |
#IPPortCountry codeCountry nameCityTypeAnonymity
150 | 152 | 156 |
{{ $index+1 }}{{ n.ip }}{{ n.port }}{{ n.country_code }}{{ n.country_name }}{{ n.city }}{{ n.type }}{{ n.anon_verbose }}
172 |
173 |
174 |
175 |
176 | 181 | 182 | 183 | 184 | -------------------------------------------------------------------------------- /socks4.txt: -------------------------------------------------------------------------------- 1 | 122.116.29.68:4145 2 | 125.228.94.199:4145 3 | 157.245.115.125:9051 4 | 174.64.199.79:4145 5 | 178.32.202.54:10231 6 | 178.32.202.54:29077 7 | 178.32.202.54:39188 8 | 178.32.202.54:48169 9 | 178.32.202.54:49280 10 | 178.32.202.54:49864 11 | 184.170.251.30:11288 12 | 184.181.178.33:4145 13 | 192.111.130.2:4145 14 | 192.111.130.5:17002 15 | 192.111.134.10:4145 16 | 192.111.135.17:18302 17 | 192.111.137.35:4145 18 | 192.111.139.163:19404 19 | 192.236.154.178:1080 20 | 192.241.156.17:1080 21 | 192.252.209.155:14455 22 | 192.252.211.193:4145 23 | 192.252.211.197:14921 24 | 192.252.215.5:16137 25 | 192.252.216.86:4145 26 | 192.252.220.89:4145 27 | 192.95.33.162:10974 28 | 192.95.33.162:2887 29 | 192.95.33.162:31572 30 | 192.95.33.162:36308 31 | 192.95.33.162:37594 32 | 192.95.33.162:51374 33 | 195.142.25.204:1082 34 | 198.177.252.24:4145 35 | 198.177.253.13:4145 36 | 198.177.254.131:4145 37 | 198.177.254.157:4145 38 | 199.102.104.70:4145 39 | 199.102.106.94:4145 40 | 199.116.112.6:4145 41 | 199.116.114.11:4145 42 | 199.187.210.54:4145 43 | 199.229.254.129:4145 44 | 203.190.8.35:55634 45 | 206.220.175.2:4145 46 | 208.102.51.6:58208 47 | 208.65.90.21:4145 48 | 208.65.90.3:4145 49 | 212.233.93.84:10808 50 | 216.68.128.121:4145 51 | 219.154.210.157:9999 52 | 24.249.199.12:4145 53 | 24.249.199.4:4145 54 | 31.128.41.253:18080 55 | 36.67.161.3:4153 56 | 46.105.105.223:34293 57 | 46.105.105.223:34570 58 | 46.105.105.223:41448 59 | 46.105.105.223:43470 60 | 46.105.105.223:43853 61 | 46.105.105.223:4498 62 | 46.105.105.223:55303 63 | 46.105.105.223:5589 64 | 46.105.105.223:64464 65 | 49.156.23.90:1080 66 | 5.160.103.246:8080 67 | 5.78.124.240:40001 68 | 51.158.68.28:16379 69 | 51.158.70.223:16379 70 | 51.210.111.216:16490 71 | 51.210.111.216:22302 72 | 51.210.111.216:29963 73 | 51.210.111.216:33123 74 | 51.210.111.216:43311 75 | 51.210.111.216:47878 76 | 51.210.111.216:56241 77 | 51.210.111.216:62160 78 | 51.75.126.150:12202 79 | 51.75.126.150:14602 80 | 51.75.126.150:15816 81 | 51.75.126.150:2184 82 | 51.75.126.150:54612 83 | 51.75.126.150:59091 84 | 51.75.126.150:6424 85 | 51.75.126.150:9532 86 | 54.36.176.100:23155 87 | 54.36.176.100:26045 88 | 54.36.176.100:29077 89 | 54.36.176.100:45704 90 | 54.36.176.100:49280 91 | 54.36.176.100:49864 92 | 57.129.81.201:1080 93 | 64.124.145.1:1080 94 | 64.227.131.240:1080 95 | 66.42.224.229:41679 96 | 66.42.224.229:41679 97 | 67.201.33.10:25283 98 | 67.201.33.10:25283 99 | 67.201.35.145:4145 100 | 67.201.39.14:4145 101 | 67.201.59.70:4145 102 | 68.1.210.163:4145 103 | 68.71.240.210:4145 104 | 68.71.241.33:4145 105 | 68.71.242.118:4145 106 | 68.71.245.206:4145 107 | 68.71.247.130:4145 108 | 68.71.249.153:48606 109 | 68.71.252.38:4145 110 | 68.71.254.6:4145 111 | 69.61.200.104:36181 112 | 70.166.167.38:57728 113 | 70.166.167.55:57745 114 | 72.195.101.99:4145 115 | 72.195.114.169:4145 116 | 72.195.34.35:27360 117 | 72.195.34.41:4145 118 | 72.195.34.58:4145 119 | 72.195.34.59:4145 120 | 72.195.34.59:4145 121 | 72.205.0.67:4145 122 | 72.205.0.93:4145 123 | 72.207.109.5:4145 124 | 72.211.46.124:4145 125 | 72.211.46.99:4145 126 | 72.214.108.67:4145 127 | 72.37.217.3:4145 128 | 72.49.49.11:31034 129 | 74.119.144.60:4145 130 | 74.119.147.209:4145 131 | 82.223.165.28:13238 132 | 82.223.165.28:46137 133 | 88.225.214.121:4145 134 | 94.136.190.22:8080 135 | 98.170.57.231:4145 136 | 98.170.57.241:4145 137 | 98.170.57.249:4145 138 | 98.175.31.195:4145 139 | 98.175.31.195:4145 140 | 98.175.31.222:4145 141 | 98.178.72.21:10919 142 | 98.181.137.80:4145 143 | 98.188.47.132:4145 144 | 98.188.47.150:4145 145 | 98.190.239.3:4145 146 | 98.191.0.37:4145 147 | -------------------------------------------------------------------------------- /socks5.txt: -------------------------------------------------------------------------------- 1 | 106.75.71.155:8443 2 | 113.62.171.32:8880 3 | 120.204.84.132:38080 4 | 121.169.46.116:1090 5 | 134.209.29.120:1080 6 | 139.59.1.14:1080 7 | 159.203.61.169:1080 8 | 159.65.128.194:1080 9 | 161.35.70.249:1080 10 | 178.32.202.54:12550 11 | 178.32.202.54:29077 12 | 178.32.202.54:49864 13 | 178.32.202.54:52638 14 | 184.170.251.30:11288 15 | 184.181.178.33:4145 16 | 185.93.89.144:25665 17 | 185.93.89.146:4169 18 | 185.93.89.155:19382 19 | 185.93.89.187:4046 20 | 192.111.130.2:4145 21 | 192.111.130.5:17002 22 | 192.111.134.10:4145 23 | 192.111.135.17:18302 24 | 192.111.137.35:4145 25 | 192.111.139.163:19404 26 | 192.236.154.178:1080 27 | 192.241.156.17:1080 28 | 192.252.209.155:14455 29 | 192.252.211.193:4145 30 | 192.252.211.197:14921 31 | 192.252.216.86:4145 32 | 192.252.220.89:4145 33 | 192.95.33.162:1129 34 | 192.95.33.162:15735 35 | 192.95.33.162:37594 36 | 192.95.33.162:38793 37 | 192.95.33.162:51374 38 | 192.95.33.162:64840 39 | 198.177.252.24:4145 40 | 198.177.253.13:4145 41 | 198.177.254.131:4145 42 | 198.177.254.157:4145 43 | 199.102.104.70:4145 44 | 199.102.106.94:4145 45 | 199.116.112.6:4145 46 | 199.116.114.11:4145 47 | 199.187.210.54:4145 48 | 199.229.254.129:4145 49 | 203.190.8.35:55634 50 | 208.102.51.6:58208 51 | 208.65.90.21:4145 52 | 208.65.90.3:4145 53 | 216.68.128.121:4145 54 | 222.59.173.105:44124 55 | 23.249.27.167:10808 56 | 24.249.199.4:4145 57 | 39.187.67.199:1080 58 | 43.231.78.170:1080 59 | 45.115.236.15:1080 60 | 45.12.150.82:1080 61 | 46.105.105.223:35749 62 | 46.105.105.223:41448 63 | 46.105.105.223:50160 64 | 46.105.105.223:51869 65 | 46.105.105.223:54030 66 | 46.105.105.223:55303 67 | 46.105.105.223:64464 68 | 51.15.232.175:16379 69 | 51.210.111.216:11926 70 | 51.210.111.216:16466 71 | 51.210.111.216:22302 72 | 51.210.111.216:26732 73 | 51.210.111.216:29963 74 | 51.210.111.216:33123 75 | 51.210.111.216:39811 76 | 51.210.111.216:43311 77 | 51.210.111.216:43520 78 | 51.210.111.216:47878 79 | 51.210.111.216:56241 80 | 51.75.126.150:14602 81 | 51.75.126.150:1964 82 | 51.75.126.150:22196 83 | 51.75.126.150:3307 84 | 51.75.126.150:54612 85 | 51.75.126.150:59091 86 | 51.75.126.150:6424 87 | 51.75.126.150:9532 88 | 54.36.176.100:26045 89 | 54.36.176.100:45704 90 | 54.36.176.100:48169 91 | 54.36.176.100:49864 92 | 57.129.81.201:1080 93 | 66.42.224.229:41679 94 | 66.42.224.229:41679 95 | 67.201.33.10:25283 96 | 67.201.33.10:25283 97 | 67.201.35.145:4145 98 | 67.201.39.14:4145 99 | 67.201.59.70:4145 100 | 68.71.240.210:4145 101 | 68.71.241.33:4145 102 | 68.71.242.118:4145 103 | 68.71.247.130:4145 104 | 68.71.254.6:4145 105 | 69.61.200.104:36181 106 | 70.166.167.38:57728 107 | 70.166.167.55:57745 108 | 72.195.101.99:4145 109 | 72.195.101.99:4145 110 | 72.195.34.58:4145 111 | 72.195.34.59:4145 112 | 72.195.34.59:4145 113 | 72.205.0.67:4145 114 | 72.205.0.93:4145 115 | 72.207.109.5:4145 116 | 72.211.46.124:4145 117 | 72.211.46.99:4145 118 | 72.214.108.67:4145 119 | 72.49.49.11:31034 120 | 74.119.144.60:4145 121 | 74.119.147.209:4145 122 | 78.129.138.107:1080 123 | 8.210.117.246:8888 124 | 8.210.77.44:38080 125 | 82.223.165.28:13238 126 | 82.223.165.28:46137 127 | 82.223.165.28:9526 128 | 83.169.255.92:1080 129 | 91.214.62.121:8053 130 | 94.136.190.22:8080 131 | 98.152.200.61:8081 132 | 98.170.57.231:4145 133 | 98.170.57.241:4145 134 | 98.170.57.249:4145 135 | 98.175.31.195:4145 136 | 98.175.31.195:4145 137 | 98.175.31.222:4145 138 | 98.178.72.21:10919 139 | 98.188.47.150:4145 140 | 98.190.239.3:4145 141 | 98.191.0.37:4145 142 | -------------------------------------------------------------------------------- /static/script.js: -------------------------------------------------------------------------------- 1 | var app = angular.module('freshproxy', []); 2 | 3 | app.controller('proxyTableCtrl', function ($scope, $http) { 4 | 5 | $scope.data = []; 6 | $scope.search = {}; 7 | $scope.title = "Loading..."; 8 | 9 | const cacheKey = "proxyData"; 10 | const cacheTimestampKey = "proxyDataTimestamp"; 11 | const updateInterval = 10 * 60 * 1000; // 10 минут 12 | 13 | const cachedData = localStorage.getItem(cacheKey); 14 | const cachedTimestamp = localStorage.getItem(cacheTimestampKey); 15 | 16 | function mapAnonymityLevel(level) { 17 | switch (level) { 18 | case "1": 19 | return "No anonymity"; 20 | case "2": 21 | return "Low anonymity"; 22 | case "3": 23 | return "Average anonymity"; 24 | case "4": 25 | return "High anonymity"; 26 | default: 27 | return "Unknown"; 28 | } 29 | } 30 | 31 | if (cachedData && cachedTimestamp && Date.now() - cachedTimestamp < updateInterval) { 32 | $scope.data = JSON.parse(cachedData); 33 | $scope.title = "Proxies"; 34 | } else { 35 | $http.get('proxylist.json').then((response) => { 36 | const json = response.data.map(proxy => ({ 37 | ...proxy, 38 | anon_verbose: mapAnonymityLevel(proxy.anon), 39 | type: [ 40 | proxy.http === "1" && "http", 41 | proxy.ssl === "1" && "https", 42 | proxy.socks4 === "1" && "socks4", 43 | proxy.socks5 === "1" && "socks5" 44 | ].filter(Boolean).join(" ") 45 | })); 46 | 47 | $scope.data = json; 48 | $scope.title = "Proxies"; 49 | 50 | localStorage.setItem(cacheKey, JSON.stringify(json)); 51 | localStorage.setItem(cacheTimestampKey, Date.now()); 52 | }); 53 | } 54 | 55 | $scope.clearCache = function () { 56 | localStorage.removeItem(cacheKey); 57 | localStorage.removeItem(cacheTimestampKey); 58 | location.reload(); 59 | }; 60 | 61 | setInterval(() => { 62 | const cachedTimestamp = localStorage.getItem(cacheTimestampKey); 63 | if (!cachedTimestamp || Date.now() - cachedTimestamp >= updateInterval) { 64 | localStorage.removeItem(cacheKey); 65 | localStorage.removeItem(cacheTimestampKey); 66 | location.reload(); 67 | } 68 | }, updateInterval); 69 | }); 70 | --------------------------------------------------------------------------------