反爬虫①---浏览器断点调试
常见的反爬虫
数据里面带有参数 ajax xhr数据
请求头(请求头中带有的加密参数)
x-apiKey: LWIzMWUtNDU0Ny05Mjk5LWI2ZDA3Yjc2MzFhYmEyYzkwM2NjfDI3NjAzNTgwOTU5MTM0NDY=
数据加密(后端返回的数据加密,返回给前端,然后用js进行一个解密)
A97F6EA7F5CBCB9B56CF32C421EE5FBF79EB46B3767F2B51369310CFB532F0A5AFF0B04AF09FD
请求参数(登录的账号密码)
mobileNo: "j8dMUr5NnsFFfsbu6XLCrZmo1lUmdc3AxBOyQyntjJI+LbrZdMeZC4p4uB4Q12dtmat2veRrS4nzZmmSMhFCgp4GpznbIvip109/PTEY3Tyn/keTV/8Ip1ypFmbrO2gKBKPG2ZyDWf3pZrASXYNc2CXN8JkJO0Z2/llaieII1rY="
cookie(在cookies中的数据会实时变化)
v AwTZcOU7OroZKI52TVQyelLC1YnzHSm_6kC80R6kkp
一.js简介:
![](/assets/blank.gif)
这里的参数就要正确,这些参数往往会进行加密就是反爬虫,例如:cookies会通过一些算法生成,一段时间内还会失效。
二.js基本语法
// 变量
var xl = '夏洛';
console.log(xl);
var length = 7; // 数字
var lastName = "Gates"; // 字符串
var cars = ["Porsche", "Volvo", "BMW"]; // 数组
var x = {firstName:"Bill", lastName:"Gates"};
// 函数
function ff() {console.log('dasdasdasd')
}
ff();
// 使用变量名声明函数
s = function () {console.log('你好')
};
s();
//自执行函数(无限debug)
!function xxx() {console.log('hello world')
}();
// 构造函数
var fun1 = new Function('n','m','console.log(n+m)'
);
fun1(2,3);
var fun2 = function (a,b) {
console.log(a+b)
};
fun2(2,3)
// js for循环 初始位置 条件 进还是退
for (var i=0; i<10; i++){
console.log(i)
}
class Student {
// 函数获取
get name(){
return 'hh'
}
// 设置
set name1(val){
console.log('ff'+val)
}
}
b = new Student();
console.log(b.name);
console.log(b.name1 = 123);
class Car {constructor(name, year) {this.name = name;this.year = year;
}age() {let date = new Date();return [date, this.name, this.year]}
}
let myCar = new Car("xxxxx", 2022);
console.log(myCar.age());
三.source面板(文件替换)调试
替换 可以修改网页的Js代码 去除debugger
可以用它做 修改对方jS 里面的debugger 破解无限debugger
有些网站js 做OB混淆的 OOXX OOOOoo
破解混淆后的JS 替换加密的JS 方便调试
还可以 写rpc 注入代码
步骤:
通过cookies中的参数。在全局搜索搜索关键字比如:
![](/assets/blank.gif)
2.搜索:
![](/assets/blank.gif)
3.打个断点:
![](/assets/blank.gif)
4.替换文件:
![](/assets/blank.gif)
5.保存覆盖出现小紫色点,查找token
![](/assets/blank.gif)
![](/assets/blank.gif)
6.修改代码。ctrl + s保存。刷新debugger住
![](/assets/blank.gif)
四.断点调试
调试 跟踪代码的意思 观察JS是怎么加密的
dom
dom属性
dom事件
位置 调用某段JS之前的位置
xhr
发包位置 可以通过调试往下找堆栈 排查算法
dom事件断点:
1.当点击登录的时候会触发一个接口
![](/assets/blank.gif)
![](/assets/blank.gif)
用光标定位这个登录触发接口的按键,点button进去
![](/assets/blank.gif)
进入了js文件
![](/assets/blank.gif)
打上断点就可以断点
![](/assets/blank.gif)
![](/assets/blank.gif)
输入密码,触发断点查看被加密参数
![](/assets/blank.gif)
进入加密的函数的内部
![](/assets/blank.gif)
2.xhr
我们触发xhr接口看url不变的路由:
![](/assets/blank.gif)
2.进行一个xhr断点
这里输入进去:
![](/assets/blank.gif)
3.点击登录触发,一样断点了,然后我们在调用堆栈中找我们输入的参数位置:
![](/assets/blank.gif)
点击不是jquery的就找到了:
![](/assets/blank.gif)
找到以后取消xhr,打断点到加密函数位置就可以:
![](/assets/blank.gif)
反爬虫①---浏览器断点调试相关推荐
- vue 浏览器调试 样式如何定位样式_浏览器断点调试-程序员的必修课
一.源码调试/debugger方法 1.1控制台调试按钮介绍 Resume script execution恢复断点调试.常用在一个方法调用多个js文件(适用冗长js代码使用).点击这个会直接跳转到下 ...
- chrome浏览器断点调试js代码 和 idea断点调试java代码
文章目录 chrome调试js代码 idea调试java代码 chrome调试js代码 Chrome调试快捷键总结 快捷键 功能 F10 (step over) 单步调试.步过,遇到函数时也当成一个语 ...
- 【过于硬核慎入】这是我遇到过的最强反爬虫(反反爬虫教程)
https://www.passkou.com/ 阅读本文前 在阅读本文前,你需要具有以下所有知识,否则你无法读懂: HTML + JS 基础 HTTP 基本知识 简单的密码学知识(MD5.AES) ...
- 配置VS Code 使其支持vue项目断点调试
转载 原文作者:肥仔快乐水 原文链接:https://juejin.im/post/6844904144457695245 起因 每个应用,不论大小,都需要理解程序是如何运行失败的.当我们写的程序 ...
- Crawler:反爬虫机制之基于urllib库+伪装浏览器+代理访问(代理地址随机选取)+实现下载某网址上所有的图片到指定文件夹
Crawler:反爬虫机制之基于urllib库+伪装浏览器+代理访问(代理地址随机选取)+实现下载某网址上所有的图片到指定文件夹 导读 基于反爬虫机制之基于urllib库+伪装浏览器+代理访问(代理地 ...
- Crawler:反爬虫之基于urllib库+伪装浏览器方式实现从各种网站上(以百度贴吧为例)获得你喜欢的照片下载到本地电脑上
Crawler:反爬虫之基于urllib库+伪装浏览器方式实现从各种网站上(以百度贴吧为例)获得你喜欢的照片下载到本地电脑上 目录 输出结果 实现代码 输出结果 后期更新-- 实现代码 import ...
- Vue中进行断点调试的两种方式(使用外部浏览器和VsCode的 Debug for Chrome插件)
场景 在使用IDEA等进行后台开发时可以直接在想要进行断点调试的地方双击添加一个断点,然后逐步或者逐过程进行调试. 但是在Vue中如果想要进行调试时,如果是在js中调试的话,可以直接添加一个debug ...
- vscode+php+phpstudy:断点调试(f5后vscode无法继续下一步;浏览器无法断点,直接返回执行结果的解决方法)
文章目录 前言 1.设置phpstudy 2.设置vscode 前言 以前用的phpstorm断点调试,今天突然想用vscode断点调试,就是不能继续执行断点下一步,都是如下图所示 看了诸多博客,步骤 ...
- 不依赖浏览器控制台的JavaScript断点调试方法
随着浏览器的逐渐强大,绝大多数情况下的代码调试都是可以通过浏览器自带的一些调试工具进行解决.然而对于一些特殊情况仍然无法享受到浏览器的强大 调试能力,比如QQ客户端内嵌web的调试(虽然说QQ目前已经 ...
最新文章
- 2020年,那些「引爆」了机器学习社区的热门论文、库和基准
- 【转】ZooKeeper原理及使用
- 开学季,如何用数据保证学生安全?这套方案值得一看
- linux cacti 搭建,Cacti搭建部署
- 【j360-boot】Spring-boot系列三(崩溃模式,不是你崩就是电脑崩)
- LeetCode-1208:尽可能使字符串相等
- 【JVM】GC Roots 根可达
- 在jQuery代码中,实现转跳
- GitLab 8.9 新增文件锁 和 U2F硬件支持
- Linux学习之十一、环境变量的功能
- 跟谁学 英语口语20090927疑问句
- 微软良心伙伴,OneDrive首发支持iOS11的文件App
- 院士李德毅:大数据认知(演讲全文)
- Linux 创建MBR的磁盘的扩展分区、逻辑分区相关问题(parted)
- supermap使用idesktop发布二三维管线地图
- 高频通信电子线路—经典七管半导体超外差式调幅(AM)收音机(恒兴HX-6B)电路深度剖析介绍(上)
- PyGmae:有限状态机实践(十二)
- matlab电气仿真模块b25,基于Matlab的由双馈风力发电机组成的风电场仿真
- 苹果iOS系统下检查第三方APP是否安装
- ISP——LSC(Lens Shading Correction)
热门文章
- 【2】机器视觉系统选型案列
- matlab 画出z2=x2-y2,怎么在MATLAB中画出x^2+y^2=1且y^2+z^2=1的图像
- 短视频APP游戏搭建需要用什么样的服务器香港高防大带宽服务器贵吗
- Modbus介绍与协议解析
- NN和KNN的简单概念
- ubuntu在线听音乐
- [轻笔记]C++实现类自注册时出现“multiple definition”(重定义)错误
- ibm服务器查看网卡信息,真实环境IBMP740小机确定网卡插槽及ip对应关系.
- [CTO札记]FriendFeed的特色功能,对社区的启发
- 为什么LC谐振频率附近信号会被放大