爬虫之如何找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函数一摸一样,方便很多对吧!!!!

原文地址:https://www.cnblogs.com/7134g/p/11743806.html