代理不适用于请求库

时间:2019-10-25 12:42:44

标签: python python-3.x

我最近正在从事偶尔的数据密集型项目,并且需要从诸如Amazon之类的电子商务平台收集数据,所以我用Python创建了一个Web抓取程序。我正在使用请求库以及用户代理和代理的列表,但是我认为它们不起作用,并且导致程序失败。请注意,Amazon Api在内容和访问率方面受到限制,不适合我的需求。

这是我发送请求的方式:

import requests
import random

session = requests.session()
proxies = [{'https:': 'https://' + item.rstrip(), 'http':
            'http://' + item.rstrip()} for item in open('proxies.txt').readlines()]
user_agent = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) '
            'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36'}

print(session.get('https://icanhazip.com', proxies=random.choice(proxies), headers=user_agent).text)

但是,我一直打印出相同的IP地址,这意味着代理无法以这种方式工作。并且proxies.txt包含以下格式的代理:

例如:

178.168.19.139:30736

342.552.34.456:8080

...

使用这些工具(或其他工具,如果有任何建议)解决由亚马逊提供的验证码和机器人检查的最佳方法是什么,为什么代理无法正常工作?

1 个答案:

答案 0 :(得分:0)

我不确定这是否对您有用,但是我发现删除字典中ip开头的协议可以解决问题。

proxies = [{'https': item.rstrip(), 'http': item.rstrip()} for item in open('proxies.txt').readlines()]