python爬虫使用代理ip或请求头的问题

在request库中使用代理ip实例如下

headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0', 'Connection': 'keep-alive', 'Cookie': 'session-id=130-1833310-5969908; session-id-time=2082787201l; ', 'referer': 'https://www.amazon.com/s/ref=nb_sb_noss?field-keywords=%E7%94%B5%E8%84%91&ie=UTF8&language=zh_CN&url=search-alias%3Daps' }# 设置代理ip proxies = { 'http': 'http://110.52.235.150:9999', 'https': 'https://58.137.62.133:80' } list_html = requests.get( 'https://www.amazon.com/s/ref=nb_sb_noss?field-keywords=' + keywords + '&ie=UTF8&language=zh_CN&url=search-alias%3Daps', timeout=timeout, headers=headers, proxies=proxies, )

可能会遇到的问题
一、 Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。')))
这种情况是爬取目标对本机进行反爬导致, 目前暂时考虑两种:
ip封锁导致: 解决的关键在于cookie携带还有ip更替, (cookie携带下, 对ip的封锁频率会降低)
请求头referer属性: 部分页面向下访问时会携带referer记录从哪个页面跳转, 有些反爬针对referer进行检测, 如果没有携带或者携带错误会大大增加封锁率
请求头用户代理: 二、Cannot connect to proxy.', NewConnectionError(': Failed to establish a new connection: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
这种情况是由于使用的代理ip失效而无法再连接的问题, 可以使用cmd安装tcping命令对ip + 端口进行有效性检查
三、'Connection to 121.61.3.9 timed out. (connect timeout=10)'))
这种情况是由于使用的代理ip连接失效或者连接过于久, 使得超过了程序设定的时间, 可以不设置request的timeout属性以达到最大时间看看是否代理ip失效问题。
使用代理ip池开源工具scylla
目前有很多ip池以接口方式提供, 付费或者免费的都有 由于本人还是学生, 暂时使用免费的开源项目scylla来获取代理ip
【python爬虫使用代理ip或请求头的问题】具体scylla配置参考我另一篇文章scylla

    推荐阅读