首页 > 解决方案 > 代理不使用请求库

问题描述

我最近偶尔从事数据密集型项目,我需要从亚马逊等电子商务平台收集数据,所以我用 Python 创建了一个网络抓取程序。我正在使用请求库以及用户代理和代理列表,但是我认为它们不起作用并且导致程序失败。请注意,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

...

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

标签: pythonpython-3.x

解决方案


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

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

推荐阅读