爬虫之破解JS生成参数

进入某网站,点击科目,打开Chrome 调试工具,刷新页面,找到 https://www.daxuedaan.com/api/v1/categories?type=1&app_name=daanjun&ts=1553752665976


图1

目标:获取其返回值

图2

分析其请求头:


图3

走过的弯路在这里就不叙述了,要想正确获得响应结果,请求时必须要带的一个参数就是tk

获取tk:


图4

最后发现 tk 存在于 https://www.daxuedaan.com/js/app.js 中


图5

    仔细查看该 js 可以看到,m.a.request 的 method 共有三种,分别是:GET、POST、PUT,由于我们的目标是 GET 请求,所以我们重点看上图的 js 函数。

    由代码可以看到 tk 的值,是将 s 转变为 json 字符串,在经过 O() 函数处理得到,所以我们的工作重点就是要知道 s 的值是什么,以及 O() 函数内容。

1. 找到 s 值:

    

图6

       通过打断点可以看到 s 的值为 {type: "1", app_name: "daanjun", ts: "1553754347135"},至于ts 就是当时请求的时间戳。

2. 找 O() 函数

    断点打到 1345行,刷新页面,单步运行

    

图7

当运行到如图所示时,点击 Step into next function call 进入函数


图8

由此可以看出,tk 就是把 json 字符串 加上"(*^__^*)",然后经过md5加密后的结果


所以在 Python 中可以这样做:

import time

import hashlib

now_time = time.time()

tk = hashlib.md5('{"type":"1","app_name":"daanjun","ts":"%s"}(*^__^*)'%str(int(now_time*1000))).hexdigest()

   

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,053评论 0 2
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,448评论 0 10
  • core package 概要:Core是所有其他包的基础包.它提供了大部分功能包括metadata,templa...
    LOVE小狼阅读 2,644评论 0 3
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,712评论 1 45
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,504评论 0 13