0%

IPPool

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)
# 判断是否为 https
is_https = resp_json.get("https", False)
# 提取 proxy
proxy = resp_json.get("proxy", "")
# 输出结果
protocol = "https" if is_https else "http"
# print(f"{protocol}://{proxy}")
res = f"{protocol}://{proxy}"
return res

def getAllProxyIP():
proxys = []
req = requests.get(url="http://192.168.80.96:5010/all")
# print(req.content)
resp_str = req.content.decode('utf-8')
resp_jsons = json.loads(resp_str)
# print(len(resp_jsons))
for json_obj in resp_jsons:
# 判断是否为 https
is_https = json_obj.get("https", False)
# 提取 proxy
proxy = json_obj.get("proxy", "")
# 输出结果
protocol = "https" if is_https else "http"
# print(f"{protocol}://{proxy}")
proxys.append(f"{protocol}://{proxy}")
return proxys



if __name__ == "__main__":
# RdmIP = getRdmProxyIP()
# print(RdmIP)
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)
# 判断是否为 https
is_https = resp_json.get("https", False)
# 提取 proxy
proxy = resp_json.get("proxy", "")
# 输出结果
protocol = "https" if is_https else "http"
# print(f"{protocol}://{proxy}")
res = f"{protocol}://{proxy}"
return res


def getAllProxyIP():
proxys = []
req = requests.get(url="http://192.168.80.96:5010/all")
# print(req.content)
resp_str = req.content.decode('utf-8')
resp_jsons = json.loads(resp_str)
# print(len(resp_jsons))
for json_obj in resp_jsons:
# 判断是否为 https
is_https = json_obj.get("https", False)
# 如果是 https 则跳过
if is_https:
continue
# 提取 proxy
proxy = json_obj.get("proxy", "")
# 输出结果
protocol = "https" if is_https else "http"
# print(f"{protocol}://{proxy}")
proxys.append(f"{protocol}://{proxy}")
return proxys


if __name__ == "__main__":
# RdmIP = getRdmProxyIP()
# print(RdmIP)
proxy_list = getAllProxyIP()
print('[+] 当前可用免费代理共', len(proxy_list), '个')
print(proxy_list)

successnum = 0
for i in range(50):

random_proxy = random.choice(proxy_list)

# print(random_proxy)
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
# print(resp)
# print(ip_bytes)
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%左右

欢迎关注我的其它发布渠道

------------- 💖 🌞 本 文 结 束 😚 感 谢 您 的 阅 读 🌞 💖 -------------