当前位置: 首页 > news >正文

爬虫案例-亚马逊反爬流程分析梳理(验证码突破)(x-amz-captcha)

总体概览:核心主要是需要突破该网站的验证码,成功后会返回我们需要的参数后再去请求一个中间页(类似在后台注册一个session),最后需要注意一下 IP 是不能随意切换的

主要难点:

1、梳理整体反爬流程

2、验证码识别

3、IP识别

难度:三颗星(适合小白、初级跟中级学习)

目标网址:aHR0cHM6Ly93d3cuYW1hem9uLmNvbS9kcC9CMENTMjhaTFdT

备注:目前是有两套方案的(1、直接正面突破验证码 2、通过修改指纹来绕过验证码),本文先讲如何直接正面突破验证码,方案2后面有机会再讲

废话不多说,先上流程图

======= 正文开始 =======

首先打开浏览器自带的无痕模式,输入网址发现直接就弹出验证码了

打开抓包软件,尝试随机输入一个数字,我这里输入的是1,发现是明文,这就简单多了

搜索一下 amzn 与 amzn-r 发现这 amzn 很明显的是验证码的标识,field-keywords是我们输入验证码的结果

这次我们再输入正确的验证码:

发现对接口https://www.amazon.com/errors/validateCaptcha 进行请求,得到了

x-amz-captcha-1 与 x-amz-captcha-2 两个参数,同时会自动条状到我们最开始输入的那个产品详情页中。

在这个时候发现此时已经生成了大部分的参数了,但经过测试发现缺少 session-token 时,这几个ID很快就会被封掉不能继续使用。

接下来继续观察发现 session-token 在这个位置生成了出来,不难看出这个接口是疑似用来注册session-token 的,这里就是在开头说的请求一个中间页来注册一个session

携带这些参数再次请求的时候发现response已经没有cookie返回了,这个时候说明cookie的状态是比较好的,该网站有一个类似Cookie纠错的功能,当cookie没有特别满足他的要求的时候就会返回一些新的参数过来,此时我们只需要更新一下请求就可以了

最后需要注意一点就是 IP 是不能随意更换的,在生成x-amz-captcha-1 与 x-amz-captcha-2 这两个参数时的 IP 是绑定的,当IP更换了去请求就会失败,对比一下

同时,当再次使用那个IP时就会出现请求被拒绝,也就是被识别到为爬虫程序,被封禁

验证码识别部分:

最后还有一个 OE 文件 ,很明显的鼠标轨迹识别,非常有可能在后续会被用于反爬的识别

整体的思路到这基本上就结束了,后续可能会再写一遍如何实现同时实现高并发的稳定爬取该网站

有兴趣,需要源码的可以私聊我

相关文章:

  • C# 集合(三) —— Stack/BitArray类
  • 【C语言回顾】编译和链接
  • 云部署最简单python web
  • 【SpringBoot】SpringBoot中防止接口重复提交(单机环境和分布式环境)
  • sqlites数据库读取,仅适用于数据少的数据库查询【改进版】
  • RedisTemplateAPI:List
  • 经常碰到的20个等待事件
  • Android firebase消息推送集成 FCM消息处理
  • I.MX6ULL Linux C语言开发环境搭建(点灯实验)
  • Python项目:数据可视化_下载数据【笔记】
  • hive初始化失败报错:Error: Duplicate key name ‘PCS_STATS_IDX‘ (state=42000,code=1061)
  • 2024年弘连网络FIC大会竞赛题线下决赛题
  • vue-img-cutter 图片裁剪详解
  • 【C++ 11 新特性】右值引用
  • 计算机网络-BGP概述
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • CEF与代理
  • Promise面试题2实现异步串行执行
  • Terraform入门 - 3. 变更基础设施
  • VUE es6技巧写法(持续更新中~~~)
  • Vue组件定义
  • 闭包--闭包作用之保存(一)
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 基于web的全景—— Pannellum小试
  • 今年的LC3大会没了?
  • 排序算法之--选择排序
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前端面试之闭包
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 新书推荐|Windows黑客编程技术详解
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • Spring第一个helloWorld
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • #laravel 通过手动安装依赖PHPExcel#
  • $ git push -u origin master 推送到远程库出错
  • $.ajax中的eval及dataType
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (简单) HDU 2612 Find a way,BFS。
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (十六)Flask之蓝图
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (已解决)什么是vue导航守卫
  • (转载)(官方)UE4--图像编程----着色器开发
  • .NET C# 使用GDAL读取FileGDB要素类
  • .NET Framework 服务实现监控可观测性最佳实践
  • .net(C#)中String.Format如何使用
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .Net多线程总结
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • @cacheable 是否缓存成功_Spring Cache缓存注解