Python请求代理.txtIP地址:端口:用户:通过

2024-06-16 16:55:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用像一个文件,我在其中存储我的代理。我想把这些加载到请求模块的代理上。在

但现在的问题是,我的代理人都搞混了。有些代理带有身份验证,有些没有

所以我的代理.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

有些有认证,有些没有

现在我要发出这样的命令

^{pr2}$

在我的代理.txt在

有人能帮我吗?在


Tags: 模块文件命令txt身份验证代理passuser
1条回答
网友
1楼 · 发布于 2024-06-16 16:55:48

从请求文档中,您可以使用带有user/pass或不带user/pass的代理。请检查以下链接: http://docs.python-requests.org/en/master/user/advanced/

要将HTTP基本身份验证与代理一起使用,请使用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.

根据文档: 若要为特定方案和主机提供代理,请使用scheme://主机名窗体为了钥匙。这将匹配对给定方案的任何请求,并且主机名。注意代理URL必须包含该方案。在

^{pr2}$

请检查代码段:

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])

相关问题 更多 >