最近在爬stockx交易数据的时候遇到了很严格的反爬。在上了随机header和ip pool的情况下,爬几十个页面就被PerimeterX的验证拦下了(403 Please verify you are a human),然后就是无论怎么换都一直403。用selenium+优化过的driver确实可行,但是速度实在是太慢了,而且pose data的时候不太方便,因此还是想用requests库看能不能绕过反爬。花了一些时间终于弄明白了他们的反爬机制,所以写一篇文章记录一下。

经过多次测试,我发现PerimeterX的防御措施有以下几种:

  1. 记录访问的header, 同一个header大量访问就会塞验证
  2. 同一ip访问间隔太短会塞验证
  3. ban了一个header+ip的组合以后,接下来访问同一链接的其他人通通塞验证
  4. (不确定)某些访问量高的页面无差别验证所有访问者
  5. pose数据时referer要求提交具体的商品页面,不能直接用官网
  6. 高峰时间无差别验证所有访问者

解决方案如下:
1和2:构建好header,用生成器生成User-Agent池和ip池,每次从中间随机选择,在抓取过程中把失败User-Agent和ip的remove掉。我一开始用Fake-UserAgent库来随机获取User-Agent,结果发现一直被ban,估计就是用的人太多都被网站记录在案了。后来自己生成了一些,被ban的频率明显降低。
3和4:访问失败后暂停一段时间或者记录并跳过失败链接。
5:pose header data时把页面的referer也附上.
6:换个时间跑即可。另外在cookie换地区似乎是可行的。

总归不是什么光彩事情,源代码就不放了。希望能对大家的思路有所帮助。

(Stockx)爬虫Requests 403(Please verify you are a human)解决方法相关推荐

  1. Apache的HTTP 403 Forbidden错误的多种原因与解决方法!

    Apache的HTTP 403 Forbidden错误的多种原因与解决方法! 参考文章: (1)Apache的HTTP 403 Forbidden错误的多种原因与解决方法! (2)https://ww ...

  2. python3 requests 错误EOF occurred in violation of protocol 解决方法

    目录 可能原因一:requests包安装不完全 可能原因二:服务器环境问题 可能原因一:requests包安装不完全 这个问题产生的原因:在安装 requests 库的时候,没有正确安装 securi ...

  3. 【爬虫进阶】常见的反爬手段和解决方法(建议收藏)

    爬虫进阶:常见的反爬手段和解决思路 1 服务器反爬的原因 2 服务器常反什么样的爬虫 3 反爬虫领域常见的一些概念 4 反爬的三个方向 5 常见基于身份识别进行反爬 5.1 通过headers字段来反 ...

  4. html403禁止访问怎么解决,打开网址出现 http 403 禁止访问是怎么回事?解决方法...

    有些用户在Win10系统上打开网址,会出现http 403 禁止访问,这是怎么回事呢?有用户知道如何解决这个问题吗?这个http 403 禁止访问,我们在Win10系统上打不开网址的时候,经常出现,如 ...

  5. Python网络爬虫爬淘宝无法爬取问题的解决方法

    看了嵩天教授的[Python网络爬虫与信息提取].MOOC. 北京理工大学   课程,里面有一段演示如何从淘宝爬取价格信息,但实际操作却不行,问题在于淘宝19年开始实行搜索必须登录,但是Python爬 ...

  6. 网络爬虫ip防止被封常见的三种解决方法

    想要爬虫顺利的采集数据,首先要能突破网站的反爬虫机制,还要防止ip被限制的风险.这样才能提高爬虫工作的效率,那么爬虫时如何防止ip被封? 一.高匿名代理 需要突破网站的反爬虫机制,少不了代理ip,借助 ...

  7. 如何解决python爬虫requests.get()遇到的418问题

    如何解决python爬虫--遇到requests.get()访问得到418问题 在爬虫时候,通过requests.get()得到不正确的状态码: 4**:表示出错 403问题:服务器已经理解请求,但是 ...

  8. python爬虫requests模块

    读书使人充实,讨论使人机智,笔记使人准确-.凡有所学,皆成性格. ---- (英国)培根 文章目录 简单的代码实现 requests.text与requests.content的区别 通过对 resp ...

  9. python 爬虫 requests 错误汇总

    1.发生异常: ProxyError HTTPSConnectionPool(host='www.baidu.com', port=443): Max retries exceeded with ur ...

最新文章

  1. 解题报告:POJ 3281 Dining(最大流 / “三分图”建图)
  2. Thymeleaf页面三元运算符
  3. 近期海内外 AI 领域招聘、招生信息汇总
  4. 一条数据的HBase之旅,简明HBase入门教程2:数据模型
  5. 对于GetMemory()函数
  6. 专用集装箱行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  7. C#正则表达式判断字符串中是否有数…
  8. 根据输入参数创建xml模板
  9. 判断IP是否为搜索引擎蜘蛛或爬虫
  10. SENTINEL Missions 哨兵卫星任务
  11. mysql高速写数据_高永志---全国书画人才资料数据库
  12. 大话西游中的这些经典元素,注意到没?
  13. 一个传奇玩家的传奇故事
  14. 数据库索引——唯一索引、主键索引、聚集索引
  15. 即席查询(Ad Hoc)如何做到又快又稳?
  16. 解决error:torch has an invalid wheel,.dist -info directory not fount
  17. 无基础学Linux(4)——基本系统
  18. python,调出黑白局部色彩照片,快去使用吧!
  19. python numpy中setdiff1d的用法
  20. python函数定义的语法形式_Python 函数(一) 基本语法

热门文章

  1. 人工智能里的数学修炼 | 隐马尔可夫模型:基于EM的鲍姆-韦尔奇算法求解模型参数
  2. Linux环境搭建spark3 yarn模式
  3. 计算机绘图R25,(学生)计算机绘图课程设计.doc
  4. Linux C语言代码风格
  5. h5,移动端预览pdf文件,使用pdfh5插件
  6. 2020-08-22 SpringMVC中Json使用、后端返回给前端的JSON对象乱码问题、前台对Json数据格式的操作、Jackson以及FastJson使用
  7. (附源码)spring boot毕业论文管理系统 毕业设计 030946
  8. 把孩子培养成普通人:一位父亲的18个忠告
  9. 膏肓痛的自疗法-------为久坐者
  10. Docker容器入门及网易最佳实践