我试着像一个文件一样使用,我在其中存储我的代理。我想把它们加载到requests模块的代理上。
但现在的问题是,我的代理混淆了。有些代理具有身份验证功能,有些则没有。
所以我的proxies.txt看起来像这样
123.12.190.121:2323:user:pass
123.12.190.122:2323:user:pass
123.12.190.123:2323
123.12.190.124:2323:user:pass
123.12.190.125:2323有些有身份验证,有些没有。
现在我想像这样调用一个命令
response = session.get(URL, proxies=proxies)将加载的代理存储在我的proxies.txt中
有人能帮帮我吗?
发布于 2017-08-15 02:08:43
在请求文档中,您可以将proxy与user/pass一起使用,也可以不与其一起使用。请查看以下链接:http://docs.python-requests.org/en/master/user/advanced/
要对代理使用HTTP Basic Auth,请使用http://user:password@host/语法:
proxies = {'http': 'http://user:pass@10.10.1.10:3128/'}因此,您需要使用帮助或正则表达式或按“:”字符拆分来创建代理字典。然后您可以创建代理url,如下所示:http://user:pass@10.10.1.10:3128 or http://10.10.1.10:3128.
文档中的内容:要为特定方案和主机提供代理,请使用方案://主机名形式作为密钥。对于给定方案的任何请求,这将与代理URL必须包含该方案的确切hostname.Note相匹配。
proxies = {'http://10.20.1.128': 'http://10.10.1.10:5323'}请检查代码片段:
import re
import random
scheme = 'http://'
proxies = {}
with open('proxy.txt', 'r') as f:
for line in f:
pr = line.strip()
m = re.search(r'^(\d+\.\d+\.\d+\.\d+)\:(\d+)\:([^\:]*)\:([^\$]*)$', pr)
if m:
print('user: ' + m.group(3))
proxies[scheme + m.group(1)] = scheme + m.group(3) + ':' + m.group(4) + '@' + m.group(1) + ':' + m.group(2)
else:
proxies[scheme + pr] = scheme + pr
print(proxies)
k = random.choice(list(proxies))
print(k + ' => ' + proxies[k])https://stackoverflow.com/questions/45680268
复制相似问题