爬虫js逆向系列

我会把做爬虫过程中,遇到的所有js逆向的问题分类展示出来,以现象,解决思路,以及代码实现。我觉得做技术分享,不仅仅是要记录问题,解决办法,更重要的是要提供解决问题的思路。怎么突破的,遇到这个问题怎么思考,尝试的方法有哪些。这样就可以有的放矢。希望对大家有用

爬虫认知

在程序猿所有的方向中,爬虫是离money最近的一个方向,你的明白?而且爬虫可发展的方向很多,前可走大数据,人工智能,后可转后端,还有就是安全领域。而且爬虫做得好,要求的技术栈还是比较全面的。如果你对爬虫有兴趣,欢迎加V:13809090874,一起沟通交流

免责申明:

此内容仅供学习交流使用,不用于商业用途,如果涉及侵权,联系作者删除

此专栏系列主要写一些js逆向爬虫的实战:抖音第三方数据分析平台爬虫心路历程(done)

1.1井中蛙:爬虫js逆向之无限debugger--抖音第三方数据分析平台的坑​zhuanlan.zhihu.com

1.2井中蛙:爬虫js逆向之加密参数破解--抖音第三方数据分析平台的坑​zhuanlan.zhihu.com快手第三数据分析平台爬虫爬虫心路历程(ing)

淘宝

拼多多

知乎

B站

微博

小红书

美团

携程

看完这个系列,js逆向对我们来说,就是信手拈来,所见即所得,哈哈哈。如果你有想抓取的网站,但有瓶颈的,或者需要源码的,欢迎加我微信:13809090874,一起攻克。

js逆向爬虫实战(2)–新快之http2.0

咱们还是老规矩,做爬虫先搞它的接口,再破登录问题。接口的破解的流程是:查看网络请求

分析请求头

找到加密参数

寻找加密参数生成的地方

破解js

带入登录参数测试接口

配套工具:charles+chrome浏览器(过段时间,我会写一篇charles小技巧,chrome调试小技巧的文章,敬请期待)

1. 查看网络请求

请求头内容如下:

url:

https://xk.newrank.cn/xdnphb/nr/cloud/ks/rank/accountAllRankList?xyz=967e1b623a8f63f569848866a45b9f10&nonce=d17c8b2e9

headers:

:method: POST

:authority: xk.newrank.cn

:scheme: https

:path: /xdnphb/nr/cloud/ks/rank/accountAllRankList?xyz=967e1b623a8f63f569848866a45b9f10&nonce=d17c8b2e9

content-length: 105

accept: application/json, text/plain, */*

user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36

content-type: application/json;charset=UTF-8

origin: https://xk.newrank.cn

sec-fetch-site: same-origin

sec-fetch-mode: cors

sec-fetch-dest: empty

referer: https://xk.newrank.cn/data/

accept-encoding: gzip, deflate, br

accept-language: zh-CN,zh;q=0.9

cookie: UM_distinctid=174297e3d3c94d-08a2e378f3e7c7-31647304-fa000-174297e3d3d39

cookie: _uab_collina=159858542194830430867211

cookie: Hm_lvt_a19fd7224d30e3c8a6558dcb38c4beed=1602296580

cookie: __root_domain_v=.newrank.cn

cookie: _qddaz=QD.m5e3n6.wvazzv.kg322ho4

cookie: Hm_lvt_ab2358e695ccada3424acb6402afd2cb=1600654506,1601369103,1602224134,1602404683

cookie: Hm_lpvt_ab2358e695ccada3424acb6402afd2cb=1602404683

cookie: token=C50F88092E574BCCA85F41CA00F178EB

从url上看有两个加密参数:xyz和nonce。

从header里我们需要cookies。

这里大家有没有注意到一个问题,header里前面几行有“:method”这些带冒号的字段。这是http2协议,这玩意困扰我有好久,继续往下看,马上告诉你怎么解决

我们先来看一下,一点也不改动,重新发一次请求看一下,看是否能够请求成功。

用charles去模拟请求,是可以获取到数据的。但经过我测试xyz和nonce是有失效期的,cookie的失效期时间还是比较久的,cookies跟登录信息有关。而xyz与nonce是与请求接口有关。

接下来我们就要去模拟接口了:

python代码模拟接口请求(http2.0解决)

刚才用charles请求是没问题的,我们用python的requests库来试试:

def all_rank_list():

header = {'Content-Type': 'application/json;charset=UTF-8', 'pragma': 'no-cache', 'cache-control': 'no-cache', 'accept': 'application/json, text/plain, */*',

'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36', 'origin': 'https://xk.newrank.cn',

'sec-fetch-site': 'same-origin', 'sec-fetch-mode': 'cors', 'sec-fetch-dest': 'empty', 'referer': 'https://xk.newrank.cn/data/account/rank/overall',

'accept-encoding': 'gzip, deflate, br', 'accept-language': 'zh-CN,zh;q=0.9', 'Connection': 'close', 'Content-Length': '101',

'Cookie':'UM_distinctid=174297e3d3c94d-08a2e378f3e7c7-31647304-fa000-174297e3d3d39; _uab_collina=159858542194830430867211;Hm_lvt_a19fd7224d30e3c8a6558dcb38c4beed=1602296580;__root_domain_v=.newrank.cn;_qddaz=QD.m5e3n6.wvazzv.kg322ho4;Hm_lvt_ab2358e695ccada3424acb6402afd2cb=1600654506,1601369103,1602224134,1602404683;token=C50F88092E574BCCA85F41CA00F178EB'}

#参数我已经破解了,就直接带着了,将我们抓取到的接口的xyz和nonce复制过来也是可以的

url = 'https://xk.newrank.cn/xdnphb/nr/cloud/ks/rank/accountAllRankList'

nonce_ = nonce()

url_ = url + '?AppKey=joker&nonce={}'.format(nonce_)

xyz_ = xyz(url_)

url_params = {

'xyz':xyz_,

'nonce':nonce_

}

url = '{}?{}={}&{}={}'.format(url,'xyz',url_params['xyz'],'nonce',url_params['nonce'])

post_params ={"type":"搞笑","rankDate":"2020-10-07","start":1,"size":20,"rankType":"realTime","sort":"newrankIndex"}

r = requests.post(url, data=post_params, headers=header,verify=False)

print(r.text)

这里的返回结果为:

{"msg":"内部错误","data":null,"code":5000}

这里虽然是一个小坑,但让我费了好久的时间,最后解决这个问题,让我吐血三升,直骂自己傻逼。我先卖个关子,继续看,看我怎么解决的。

遇到这个这个返回结果,第一想法就是,我的请求参数不对,哪里出了问题。

第一次尝试: 文本比对–请求头文本对比

我就不贴图了,完全设置是一样的,结果还是不行,还是这个问题。我郁闷了,懵逼一会了。难道是跟http2协议有关,跟请求头的“:method”这样的字段有关?

第二次尝试: http2协议–请求头带冒号解决”:method“。

我的请求是不带“:method”这些字段,因为python的requests包不支持http2协议请求。没辙就百度嘛!!python的确有两个包可以支持http2的请求,hyper包,但这个已经三年不更新了;还有一个包名字我忘了,它不支持代理。做爬虫,不支持代理还怎么玩啊。自闭中。。

第三次尝试: 查看该网站的发送请求的js地方,看它是带了哪些请求参数,是不是也带了“:method”这东西

看上图,没看到“:method”这鬼玩意。好吧,我想复杂了,那就是说不带也是可以的。用curl来模拟一下,看看能不能请求到数据

第四次尝试: curl模拟请求

结果:

真的是不带也是可以的,请求头里没有“:method”。

各位到了这一步基本可以确定,不是别人的问题,而是我自己的问题了。那到底是哪里出了问题了呢。。。。。。。。。抓狂中

第五次尝试: 经过痛苦地一遍遍查看短短24行代码,终于发现问题所在了。

r = requests.post(url, data=post_params, headers=header,verify=False)

就是这行的代码的问题,大家能看出问题点嘛?

它的请求头有个字段:

'Content-Type': 'application/json;charset=UTF-8'

哎,说多了都是累:改一个变量定义就可以了:

r = requests.post(url, json=post_params, headers=header,verify=False)

把data改成json就可以了。。。。。。我TM。。

data在什么使用呢?这哥们写的很好Python requests.post方法中data与json参数区别

不说了,郁闷死了。咱们继续。

下一篇文章给大家说说如何破解请求的加密参数xyz与nonce的。

此生愿为井中一蛙,不问世间繁华变迁,常怀敬畏之心,坚守心中的方寸之地

python爬虫之逆向破解_js逆向爬虫实战(2)--新快之加密参数破解相关推荐

  1. 极验第四代滑块验证码破解(四):请求分析及加密参数破解

    极验第四代滑块验证码破解(四):请求分析及加密参数破解 声明 一.极验请求分析 1. 滑块测试网站入口 2. 滑块验证过程抓包 3. 请求详解 3.1. adaptive-captcha-demo 3 ...

  2. 网络爬虫的秘密:百度翻译加密参数破解

    一.小试牛刀 在上课的时候,百度翻译之前的那个简单的接口,需要你多次尝试之后才能出来,其实只要我们打开network中的XHR就可以查看到. 步骤1:浏览器打开:fanyi.baidu.com, 按键 ...

  3. 爬虫之js加密参数破解练习-百度指数爬虫(附完整源码)

    百度指数爬虫 前言 分析 查看响应体 找到加密的代码块 python实现解密过程 完整代码 前言 完整源码如因环境问题无法运行(没有安装node环境),将解密部分换成python(已在博客中附上)即可 ...

  4. 最新巨潮加密参数破解--实测可用

    声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! 问题描述: 搜了下网上关于巨潮网页的数据获取爬虫好像跟我写的不一样,可能我没仔细看,应为我以前拿的也是财务数据以及 ...

  5. 【js逆向】md5加密参数破解

    MD5 md5:消息摘要算法(英文:MD5 Message-Digest Algorithm ),一种被广泛使用的密码散列函数,可以产生一个128位(16字节)的散列值.该加密算法不可逆,通过暴力穷举 ...

  6. 爬虫之js加密参数破解步骤分析-百度翻译移动版sign值的获取

    百度翻译sign值的获取 前言语 请求参数分析 动态分析参数生成方式 定位参数生成的位置 断点调试 使用python生成sign 第一种方式-读懂js代码,翻译成python 使用执行js的包 前言语 ...

  7. 【iOS app加密】iOS app之游戏加密防破解

    [iOS app加密]iOS app之游戏加密防破解.iOS app游戏类应用有一个很泛滥但被视为鸡肋的问题,那就是iOS app被破解的问题.因为国内大多数游戏靠内购和广告盈利,游戏安装包也只是在早 ...

  8. 爬虫技术之食物链顶端——逆向

    原文地址 一.爬虫引言 距离最近一次博客的更新,已经快半年了.这么久一直没写博客,是因为最近半年在跟几个小伙伴打造一个tiktok的数据平台,乐不思蜀.今天抽空特意记录分享一下我认为的爬虫技术的顶端- ...

  9. Python爬虫:爬取instagram,破解js加密参数

    Python爬虫:爬取instagram,破解js加密参数 instagram 是国外非常流行的一款社交网站,类似的还有像facebook.twitter,这些社交网站对于掌握时事热点.电商数据来源和 ...

最新文章

  1. 简单js特效代码大全_Django 功法大全
  2. 阿里云徐立:面向容器和 Serverless Computing 的存储创新
  3. 十年的老代码,你敢动?
  4. JavaEE的13种核心技术
  5. 洛谷P2569 [SCOI2010]股票交易
  6. 空间留言软件_四款高质量高性能优质软件,强大还免费,建议偷偷收藏使用
  7. H3C PBR实验(策略路由)
  8. .html(),.text()和.val()的差异总结:
  9. JMS 开发步骤、持久化 topic 消息与非持久化 topic 消息
  10. 软件体系结构风格整理
  11. linux登录界面配置、\etc\motd有趣的图案
  12. 一个普通人的震后十年
  13. 《指弹:周杰伦青花瓷》
  14. SEP8266 由零开始(一),最小系统,下载,与WiFi建立
  15. ConvNext模型复现--CVPR2022
  16. 微信开发者工具官方版
  17. easyUI日期框的日期范围限制
  18. 录屏软件 ev录屏 安装与使用教程 教学演示视频提问必会的软件
  19. Invalid byte tag in constant pool: 18
  20. 唐端荣|DSP投放引擎的设计与实现

热门文章

  1. ASP.NET毕业设计 C#高校档案数字化管理系统的设计与实现-王翔-专题视频课程
  2. Annovar 信息注释
  3. 智慧施工:打造绿色环保智慧型文明工地
  4. 如何选择适合你的兴趣爱好(六十二),骑马
  5. 如何衡量低代码开发ROI
  6. 计算机类短视频论文,论新媒体环境下短视频平台的发展--以秒拍为例.docx
  7. 图片怎么在手机上转Word?几个步骤轻松解决
  8. 对话何小鹏:汽车的消费电子化,其实拉高了造车门槛
  9. 学计算机高中选那三科,想当老师高中如何选科 选哪三科好
  10. frp内网穿透工具实现内网穿透