Scrapy 使用代理隧道爬取HTTPS的BUG

一两年前的代理都是代理池模式的,每次链接时代理IP是自己控制的,没发现问题

现在用隧道代理,每个TCP在远端分别用不同的IP代理并返回,自己可以通过设置header的部分字段来通知远端隧道更换IP

遇到一个问题,就是我的处理逻辑是爬一段时间,当这个IP被ban掉后换新的IP,但是死活换不了

经过debug和查找代理的相关资料发现 要在headers里 

request.headers['Proxy-Connection'] = "close"
request.headers["Connection"] = "close"

将这两个字段设置为CLOSE 才能关闭HTTPS

但是设置以后问题依旧,问题表现还是爬到指定数量后无法更换IP

后来发现 这个在middleware process_response函数中处理的request实际上还是要跟其他自己生成的request一起放到调度器里

,这里就会用到scrapy自带的去重filter,就是实际上这个request没发出去,直接被scrapy自己过滤掉了。

处理完request后 设置这个字段

request.dont_filter = True

就可以不通过过滤器,直接发送请求了。

 

scrapy的组件比较多,原生的downloadmiddleware很多都默认启用,比如UA cookies 去重filter这类的,自己写middleware时候要注意。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值