|
1威望
本帖最后由 易水寒 于 2019-5-7 21:40 编辑
问题描述:
自己做爬虫,为了不被反爬禁掉,想用代理ip池来更换IP。通过代理IP去访问一个“会返回我ip地址的网站”来查看代理ip是否启用成功
但是无论怎么替换代理,或更改协议,调试的时候,request总是给我返回我自己的IP(联通运营商给我分配的那个公网ip),而不是我启用的那个代理IP。
下面把我的代码贴出来,希望大神能帮我解决一下,卡在这里好久了。测试发现user-agent是设置成功了,但是ip始终都不行。
# 验证代理是否可用
def verify_one_proxy(self, proxy, protocol):
proxies = {protocol: proxy} # 例如 {"http": "14.146.95.45:9797"} {'https': 'http://111.177.181.249:9999'}
try:
verify_adr = 'http://2019.ip138.com/ic.asp'
respone = requests.get(verify_adr, proxies=proxies, timeout=2)._content.decode("gbk")
verify_adr1 = 'http://httpbin.org/get'
respone1 = requests.get(verify_adr1, proxies=proxies, timeout=2)._content.decode("utf8")
# 创建下面用urllib.request来测试一下行不行
# 创建ProxyHandler
proxy_support = request.ProxyHandler(proxies)
# 创建Opener
opener = request.build_opener(proxy_support)
# 添加User Angent
opener.addheaders = [('User-Agent','Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36')]
# 安装OPener
request.install_opener(opener)
# 使用自己安装好的Opener
respone2 = request.urlopen(verify_adr1)
# 读取相应信息并解码
html = respone2.read().decode("utf-8")
return True
except Exception as e:
print('代理IP %s不可用!,Reason:%s' % (proxy, e.args[1]))
下面贴几个调试时候的截图:
这个代理ip是我从西刺代理拿下来的
下面截图这个可以看到resp**e里面看到了我的ip,还是我自己的,代理失败
再换个别的库来请求,还是一样
|
|