python爬虫之逆向破解_js逆向爬虫实战(2)--新快之加密参数破解
爬虫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. 滑块测试网站入口 2. 滑块验证过程抓包 3. 请求详解 3.1. adaptive-captcha-demo 3 ...
- 网络爬虫的秘密:百度翻译加密参数破解
一.小试牛刀 在上课的时候,百度翻译之前的那个简单的接口,需要你多次尝试之后才能出来,其实只要我们打开network中的XHR就可以查看到. 步骤1:浏览器打开:fanyi.baidu.com, 按键 ...
- 爬虫之js加密参数破解练习-百度指数爬虫(附完整源码)
百度指数爬虫 前言 分析 查看响应体 找到加密的代码块 python实现解密过程 完整代码 前言 完整源码如因环境问题无法运行(没有安装node环境),将解密部分换成python(已在博客中附上)即可 ...
- 最新巨潮加密参数破解--实测可用
声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! 问题描述: 搜了下网上关于巨潮网页的数据获取爬虫好像跟我写的不一样,可能我没仔细看,应为我以前拿的也是财务数据以及 ...
- 【js逆向】md5加密参数破解
MD5 md5:消息摘要算法(英文:MD5 Message-Digest Algorithm ),一种被广泛使用的密码散列函数,可以产生一个128位(16字节)的散列值.该加密算法不可逆,通过暴力穷举 ...
- 爬虫之js加密参数破解步骤分析-百度翻译移动版sign值的获取
百度翻译sign值的获取 前言语 请求参数分析 动态分析参数生成方式 定位参数生成的位置 断点调试 使用python生成sign 第一种方式-读懂js代码,翻译成python 使用执行js的包 前言语 ...
- 【iOS app加密】iOS app之游戏加密防破解
[iOS app加密]iOS app之游戏加密防破解.iOS app游戏类应用有一个很泛滥但被视为鸡肋的问题,那就是iOS app被破解的问题.因为国内大多数游戏靠内购和广告盈利,游戏安装包也只是在早 ...
- 爬虫技术之食物链顶端——逆向
原文地址 一.爬虫引言 距离最近一次博客的更新,已经快半年了.这么久一直没写博客,是因为最近半年在跟几个小伙伴打造一个tiktok的数据平台,乐不思蜀.今天抽空特意记录分享一下我认为的爬虫技术的顶端- ...
- Python爬虫:爬取instagram,破解js加密参数
Python爬虫:爬取instagram,破解js加密参数 instagram 是国外非常流行的一款社交网站,类似的还有像facebook.twitter,这些社交网站对于掌握时事热点.电商数据来源和 ...
最新文章
- 简单js特效代码大全_Django 功法大全
- 阿里云徐立:面向容器和 Serverless Computing 的存储创新
- 十年的老代码,你敢动?
- JavaEE的13种核心技术
- 洛谷P2569 [SCOI2010]股票交易
- 空间留言软件_四款高质量高性能优质软件,强大还免费,建议偷偷收藏使用
- H3C PBR实验(策略路由)
- .html(),.text()和.val()的差异总结:
- JMS 开发步骤、持久化 topic 消息与非持久化 topic 消息
- 软件体系结构风格整理
- linux登录界面配置、\etc\motd有趣的图案
- 一个普通人的震后十年
- 《指弹:周杰伦青花瓷》
- SEP8266 由零开始(一),最小系统,下载,与WiFi建立
- ConvNext模型复现--CVPR2022
- 微信开发者工具官方版
- easyUI日期框的日期范围限制
- 录屏软件 ev录屏 安装与使用教程 教学演示视频提问必会的软件
- Invalid byte tag in constant pool: 18
- 唐端荣|DSP投放引擎的设计与实现