【学习心得】爬虫逆向的小技巧小知识(持续更新)

(一)小知识

  • windows.onload = function () {doit()} 当页面加载完成后立即执行doit函数
  • BrowserType() 用来获取浏览器的一系列参数
  • constructor 是类的特殊方法,当new一个类的新实例时该方法被调用
  • window.btoa(string) 将一个ASCII字符串变成Base64编码的字符串
  • 对称加密只有一个key,加解密都用它;非对称加密有两个key,你要发给谁,就用谁的公钥加密,拿到数据的人用自己的私钥解密
  • 要知道自执行函数常见的几种样子

(二)小技巧

  • F12禁用时,有点击右上角的三个点,找到开发者工具打开它;还可以用独立窗口打开开发者工具
  • 若JS中的某种加密(例如MD5)可以在自己的NodeJS上导入库来实现,这样就不用逆向太多东西
  • 上面的技巧中怎么判断是否“可以”?将密文输入到在线MD5加密工具中试一下,看看返回结果和断点处的是否一样
  • 加密一般是请求参数加密,参数又可以分为cookie中的参数,URL中的查询参数
  • 解密一般对响应加密的数据
  • 逆向的时候,应该断点跟着代码走,意思是先在代码中推理出了要下断点的位置,再去打断点,跳到下个断点处调试
  • 如果在发起程序的堆栈中有异步调用,就不好用XHR断点来调试
  • JS代码中如果有if判断条件,若if一定会执行(比如里面有加解密函数),那么我们可以直接去掉if
  • 在webpack逆向中,在加密处打断点才能找到function的call;对.call(this,n(11))下断点后要重新加载整个文档而不单单是接口,这样才能找到webpack加载器,控制台输入n点击一下输出就可以找到加载器的入口
  • 看cookie中有没有cookie参数时,httponly是肯定不会有加密的,因为是从服务器返回的
  • 源代码HTML中的密文,可以试试用id="xxx"里的xxx值进行全局搜索寻找解密入口
  • 如果加密的key不会随着URL变化而不同,那么我们就可以不用逆向,直接复制下来
  • 用constructor构造函数和递归实现无限调用自身的方式制造无限debugger,破解的方法是找到该函数定义但未执行的时机下断点,然后置空函数
  • 有时候无限debugger的构造函数代码被卸载了七八个JS文件中,要耐心的一个个置空
  • 如果请求参数中有csrf_token一般他在网页源代码中直接就有
  • 在破解Cookie反爬虫时,进入页面打开F12后,要就得去删掉存在浏览器中的Cookie和清空所有数据包再刷新页面,这样你才能分析出来第一次响应给你Cookie的是哪个包
  • 分析验证码API协议的时候,先清空所有包,再点验证码上的刷新按钮重新发包
  • Python还原加密参数的时候,常会遇到还原生成的参数与网站生成的参数不一样的情况,不要慌张,仔细对比去排查问题
  • 用pyexecjs库去实现Python执行JS代码的时候,从Python中将字典json_dict传给JS中的函数,比如call('func', json_dict),这样做是不对的,不能传字典!必须将字典用json.dumps方法变成json_str字符串才能传入call方法里面。也不能自己去构造字符串!切记不要自己去讲字典加个引号构造成字符串的形式传入,这样做也是无法得到正常的输出的。
  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值