Proxy_pool
项目 https://github.com/jhao104/proxy_pool/tree/master
安装redis 并运行 ./redis-serve
cd proxy_pool
pip3 install -r requirements.txt
vim setting.py
修改redis密码
img
./start.sh 运行即可
img
每次访问 这个api接口 都会得到不同的代理池IP
http://127.0.0.1:5010/get/
img
后续可根据需要重新再代码基础上正则 或者 额外加方法
输出ip:port即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| import json import random import requests
def getRdmProxyIP():
req = requests.get(url="http://192.168.80.96:5010/get") print(req.content) resp_str = req.content.decode('utf-8') resp_json = json.loads(resp_str) is_https = resp_json.get("https", False) proxy = resp_json.get("proxy", "") protocol = "https" if is_https else "http" res = f"{protocol}://{proxy}" return res
def getAllProxyIP(): proxys = [] req = requests.get(url="http://192.168.80.96:5010/all") resp_str = req.content.decode('utf-8') resp_jsons = json.loads(resp_str) for json_obj in resp_jsons: is_https = json_obj.get("https", False) proxy = json_obj.get("proxy", "") protocol = "https" if is_https else "http" proxys.append(f"{protocol}://{proxy}") return proxys
if __name__ == "__main__": proxy_list = getAllProxyIP() print('[+] 当前可用免费代理共',len(proxy_list),'个') print(proxy_list)
random_proxy = random.choice(proxy_list)
print(random_proxy)
if random_proxy.startswith('https'): proxy = {'https': random_proxy} else: proxy = {'http': random_proxy}
print(proxy)
req = requests.get(url="http://ipinfo.io",proxies=proxy) if req.status_code == 200: resp = req.content print(resp) else: print("[-] error, bad status_code:",req.status_code)
|
img
在免费的代理中 有部分仍不可用 会返回404notfound 或者请求失败等
免费代理池还是存在不能用的问题。【毕竟白嫖的 能用就行吧】
跑了20次 成功13次 勉强还算行吧 50次 成功37次
https的基本上不行 之前都去掉了
img
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| import json import random import requests import re
def getRdmProxyIP(): req = requests.get(url="http://192.168.80.96:5010/get") print(req.content) resp_str = req.content.decode('utf-8') resp_json = json.loads(resp_str) is_https = resp_json.get("https", False) proxy = resp_json.get("proxy", "") protocol = "https" if is_https else "http" res = f"{protocol}://{proxy}" return res
def getAllProxyIP(): proxys = [] req = requests.get(url="http://192.168.80.96:5010/all") resp_str = req.content.decode('utf-8') resp_jsons = json.loads(resp_str) for json_obj in resp_jsons: is_https = json_obj.get("https", False) if is_https: continue proxy = json_obj.get("proxy", "") protocol = "https" if is_https else "http" proxys.append(f"{protocol}://{proxy}") return proxys
if __name__ == "__main__": proxy_list = getAllProxyIP() print('[+] 当前可用免费代理共', len(proxy_list), '个') print(proxy_list)
successnum = 0 for i in range(50):
random_proxy = random.choice(proxy_list)
match = re.match(r'http://(\d+\.\d+\.\d+\.\d+):\d+', random_proxy) if match: ip_address = match.group(1) ip_bytes = bytes(ip_address, 'utf-8')
if random_proxy.startswith('https'): proxy = {'https': random_proxy} else: proxy = {'http': random_proxy}
print(proxy) try: req = requests.get(url="http://ipinfo.io", proxies=proxy) if req.status_code == 200: resp = req.content if ip_bytes in resp: print('[+] success!',ip_address) successnum += 1
else: print("[-] error, bad status_code:", req.status_code) except requests.Timeout: print("Timeout error: The request timed out")
except requests.RequestException as e: print(f"Request error: {e}") print(successnum)
|
img
整体效果 成功率60%左右