gpt4 book ai didi

Python:如何使用请求库通过多个不同的代理服务器访问 url?

转载 作者:太空宇宙 更新时间:2023-11-04 08:13:30 27 4
gpt4 key购买 nike

正如标题中所说,我试图通过几个不同的代理依次访问一个 url(使用 for 循环)。现在这是我的代码:

import requests
import json
with open('proxies.txt') as proxies:
for line in proxies:
proxy=json.loads(line)
with open('urls.txt') as urls:
for line in urls:
url=line.rstrip()
data=requests.get(url, proxies={'http':line})
data1=data.text
print data1

和我的 urls.txt 文件:

http://api.exip.org/?call=ip

和我的 proxies.txt 文件:

{"https": "84.22.41.1:3128"}
{"http":"194.126.181.47:81"}
{"http":"218.108.170.170:82"}

我在 [www.hidemyass.com][1] 上得到的

由于某种原因,输出是

68.6.34.253
68.6.34.253
68.6.34.253

就好像它是通过我自己的路由器ip地址访问那个网站一样。换句话说,它并没有试图通过我给它的代理进行访问,它只是循环遍历并一遍又一遍地使用我自己的代理。我做错了什么?

最佳答案

根据 this线程,您需要将 proxies 字典指定为 {"protocol": "ip:port"},因此您的代理文件应该如下所示

{"https": "84.22.41.1.3128"}
{"http": "194.126.181.47:81"}
{"http": "218.108.170.170:82"}

编辑:您正在为 URL 和代理重用 line。在内循环中重用 line 没问题,但你应该使用 proxies=proxy——你已经解析了 JSON,不需要构建另一个字典.此外,正如 abanert 所说,您应该进行检查以确保您请求的协议(protocol)与代理的协议(protocol)相匹配。代理被指定为字典的原因是允许查找匹配的协议(protocol)。

关于Python:如何使用请求库通过多个不同的代理服务器访问 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18369598/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com