爬虫之如何找js入口(一)
目标网页:https://m.gojoy.cn/pages/login/ 将我删除i ndex?from=%2Fpages%2Fuser%2Findex
需要工具:chrome和油猴
油猴代码:
// ==UserScript==
// @name Json.stringify
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @include *
// @grant none
// ==/UserScript== (function(){
"use strict";
var rstringify = JSON.stringify;
JSON.stringify = function(a){
console.log("Detect Json.stringify", a);
return rstringify(a);
}
})();
第一步,F12,在第三行数字上,右键选择 Add conditional breakpoint, 用于越过反调试
如果还是卡住那么,点击这个,变成蓝色
然后点击
第二步,如果已经加载完成了, 随便输入账号密码,点击登录,查看Network里的新url。发现是login为登录请求
点击查看,发现下面有一串看不懂的参数,猜测这就是将账号密码等东西进行加密得出来的
尝试一、全文搜索username , password 以找不到,失败告终
尝试二、查看以什么格式加载的
首先看到Response Headers中有个Access-Control-Allow-Credentials:true 说明这个是个跨域请求
关掉详细信息后看到是 xhr 方式加载
打 XHR断点,输入 相应的字串,进行HOOK
上述完成后,再次输入好账号密码,登录
如果没问题的话就会停在
call stack(回调调用栈)中,一个个往下点击,直到看到类似于ajax加载的格式代码
so,找到了s这个位置就很像ajax,然后在3643那个位置点击左键,设置断点
先点击让当前代码先执行完毕,重新点击页面的登录按钮
没什么意外就会停在s这个位置,从上到下将t,y,h,Q,u,d,全部在console中打印出来
看到u的值证明没找错!!!说明就是通过这里进行与后端的通信,且根据Q这个函数进行的将u内容进行不知名的操作
所以可以猜测应该是这里得出了上面request中那一串很长的参数
双击上面输出内容中native code 就会跳转到函数定义 (一般而言,natvie code是跟不进去的)
跳转后,找到这个函数return,所以点击 { ,找到对应的 } ,找到返回值位置return a[o.m[[o.m.i[";"]]].q](o.m[[o.m.i[";"]]].x),给其打上断点
然后,还是先让当前跑完,重新点击登录,然后就会停在新增加的断点位置
接下来,在console打印出返回值
出现个与login网页中很相似的参数值,那么还是让当前跑完,然后点击Network查看最新的login的详细信息,看看是不是一样的
然而很显然一模一样!!!!
所以说这个函数 , 对username和password操作后的出来的
那么此时入口发现了,之后只需要execjs包执行或者,将js代码翻译为python代码放进爬虫中操作就可以了
上面为最常用的操作
============================================================================
接下来油猴脚本操作方式效果一样,但是更快速定位!!!!
建好脚本后开启,如何使用脚本,写脚本这里暂不论述
输入好账密后点击登录,console就会打印出下图 ,然后点击红框位置,跳转后打上断点
先执行完毕后,再重新点击登录,查看调用栈,点击s
跳转后,拖动滑动条到最左边,看到位置2就和上面的所找到的js函数一摸一样,方便很多对吧!!!!
最新文章
- 使用bootstrap tooltip控件动态修改提示内容
- 一次Redis的使用Bug记录(exec)
- C#使用委托进行异步编程。
- HDU 1011 (树形DP+背包)
- Swift实战-QQ在线音乐(第二版)
- 更改Android AVD路径
- ssh 设置免password登录
- mysql 一个较特殊的问题:You can't specify target table for update in FROM clause
- 前端图片预览,上传前预览,兼容IE7、8、9、10、11,Firefox,Chrome(学习到的知识)
- hibernate api
- 福州大学 Problem 2168 防守阵地 I
- Delphi的核心优势:三快一多
- mysql随记
- 初始化openresty开发环境
- sass学习小记
- LOJ.6235.区间素数个数(Min_25筛)
- bootstrap之navbar
- 洛谷3084 [USACO13OPEN]照片Photo
- getServletContext()接口解析(收藏)
- ora01219数据库未打开
热门文章
- flutter Oops; flutter has exited unexpectedly
- linux/windows/Mac平台生成随机数的不同方法
- IntelliJ IDEA 设置护眼背景色
- OpenID简介
- 导模块的细节:(跨文件导入模块 &;模块的两种执行方式) | 包的概念与使用 | 包中的相对导入语法
- Win10无线网络配置VMware的nat网络
- 【科普杂谈】一文看懂大数据的技术生态圈,Hadoop,hive,spark都有了
- 色彩空间RGB/CMYK/HSL/HSB/HSV/Lab/YUV基础理论及转换方法:RGB与YUV
- 使用 docsify 創建自己的 markdown 文檔系統
- nginx一些高级配置