检测网址: https(或 http)://httpbin.org/ip
检测方法:用 python 的 requests 请求,如果状态码为 200 则认为有效
检测结果:有效率高达 90%甚至 100%,但是随机选取了几个通过检测的 ip 请求原代理 IP 网站,成功率 0%,试着请求豆瓣,成功率 50%
目前猜想: 1、代理 IP 网站自己把放出的 ip 屏蔽了; 2、部分 IP 已经被使用过且已被目标网站屏蔽; 3、检测的网址或检测的方法有问题。。。
# 检测 IP 有效性
def test_proxy(proxy):
ip_port = proxy['ip_port']
scheme = proxy['scheme']
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6788.400 QQBrowser/10.3.2864.400'
}
ip = {
scheme: "{}://".format(scheme) + ip_port
}
try:
res = requests.get('{}://httpbin.org/ip'.format(scheme), headers=headers, proxies=ip, timeout=5)
if res.status_code == 200:
items = {
'proxy': scheme + '://' + ip_port
}
collection.insert(items)
print('有效', ip_port)
except:
print('无效')
pass
1
dengtongcai 2018-12-27 08:32:55 +08:00 via iPhone
有效时间有多久
|
2
meiyoumingzi6 2018-12-27 09:45:12 +08:00 via Android
200 认为有效不太科学吧
|
3
bruce00 OP @dengtongcai 刚才检测了一遍,有效率 70%,跟昨天差不多,这是批量提取出来的,直接从网站上爬的有效率更高,正常么?
|
4
bruce00 OP @meiyoumingzi6 我也加了个 print(res.text)大致看了看,几乎都能返回网页的内容
|
5
miniliuke 2018-12-27 10:04:17 +08:00 via Android
@bruce00 你访问百度还返回 200 呢,啥时候百度成为你的代理了.......不如直接拿代理去访问你的某个页面,对比一下返回的内容,一样说明有效
|
7
dengtongcai 2018-12-27 11:05:11 +08:00
@bruce00 我的意思是比如说你测试时间是 2018-12-27 11:00 然后在 2018-12-17 11:05 之间是否一直有效,中间会不会有无效的情况
|
8
bruce00 OP @dengtongcai 原来是这样
|