首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python请求proxies.txt IP:Port:User:pass

Python请求proxies.txt IP:Port:User:pass
EN

Stack Overflow用户
提问于 2017-08-15 01:55:46
回答 1查看 2.4K关注 0票数 1

我试着像一个文件一样使用,我在其中存储我的代理。我想把它们加载到requests模块的代理上。

但现在的问题是,我的代理混淆了。有些代理具有身份验证功能,有些则没有。

所以我的proxies.txt看起来像这样

代码语言:javascript
复制
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

有些有身份验证,有些没有。

现在我想像这样调用一个命令

代码语言:javascript
复制
response = session.get(URL, proxies=proxies)

将加载的代理存储在我的proxies.txt中

有人能帮帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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/语法:

代码语言:javascript
复制
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相匹配。

代码语言:javascript
复制
proxies = {'http://10.20.1.128': 'http://10.10.1.10:5323'}

请检查代码片段:

代码语言:javascript
复制
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])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45680268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档