今天突然想起刚开始学逆向的时候遇到的一个站,当时没能力解决,现在得安排一下它才行。
时间过得真快啊,转眼都差不多一年了(我还是从前那个菜鸡,没有一丝丝改变)

目标网站:aHR0cHM6Ly9hYy5xcS5jb20vQ29taWNWaWV3L2luZGV4L2lkLzYzMDE2Ni9jaWQvMQ==

一、抓包分析
可以看到,数据是以图片的形式返回的,而这个图片的网址是加密的,那就跟栈找到它生成的地方呗

二、跟栈分析
下断点刷新页面

可以看到imgSrcList已经有数据了,现在我们全局搜一下,看它是在哪里被赋值的

可以看到imgSrcList是被imgobj赋值的,那接下来再搜下imgobj

imgobj是被PICTURE赋值的,再搜下PICTURE…

然后就追到_v了,这时候再搜_v好像也没啥东西了,细心观察会发现在PICTURE被_v赋值的上面有eval这种字眼,遇到eval的要特别留意,往往会有意想不到的惊喜
把这个自执行函数copy下来,eval改成concole.log就能可能到内容了

这里window.DATA和window.nonce都是未知的,像这种赋值在window上的,一般都要去源码上喵一眼,看有没有找到


那接下来就好办了呗,正则匹配出来然后放到那个解密函数跑一下行了
注意:
(1)window.nonce在源码上两次被赋值,第二次才是真正的window.nonce
(2)生成window.nonce的地方会检测一些环境,由于每次检测的点都是不一样的,这里建议用jsdom补环境

三、请求验证

python代码:

import requests
import execjs
import reheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
}for k in range(1,10):print("第"+str(k)+"页")response = requests.get('https://ac.qq.com/ComicView/index/id/630166/cid/%s?fromPrev=1'%(str(k)), headers=headers)nonce_js=re.findall('] = (.*?);',str(response.text))[1]f_str='const jsdom = require("jsdom");const { JSDOM } = jsdom;const dom = new JSDOM(`<!DOCTYPE html><p>Hello world</p>`);window = dom.window;document = window.document;XMLHttpRequest = window.XMLHttpRequest;'+'function a(){var b='+nonce_js+'; return b}'js = execjs.compile(f_str)nonce = js.call("a")print("nonce: ",nonce)data=re.findall("DATA = '(.*?)'",str(response.text))[0]print("data: ",data)with open('test.js', 'r', encoding='utf-8') as f:content = f.read()ctx = execjs.compile(content)result_data = ctx.call('get_data', data, nonce)for i in result_data:print(i)print("\n")

js代码:

function Base() {_keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";this.decode = function(c) {var a = "", b, d, h, f, g, e = 0;for (c = c.replace(/[^A-Za-z0-9\+\/\=]/g, ""); e < c.length; )b = _keyStr.indexOf(c.charAt(e++)),d = _keyStr.indexOf(c.charAt(e++)),f = _keyStr.indexOf(c.charAt(e++)),g = _keyStr.indexOf(c.charAt(e++)),b = b << 2 | d >> 4,d = (d & 15) << 4 | f >> 2,h = (f & 3) << 6 | g,a += String.fromCharCode(b),64 != f && (a += String.fromCharCode(d)),64 != g && (a += String.fromCharCode(h));return a = _utf8_decode(a)};_utf8_decode = function(c) {for (var a = "", b = 0, d = c1 = c2 = 0; b < c.length; )d = c.charCodeAt(b),128 > d ? (a += String.fromCharCode(d),b++) : 191 < d && 224 > d ? (c2 = c.charCodeAt(b + 1),a += String.fromCharCode((d & 31) << 6 | c2 & 63),b += 2) : (c2 = c.charCodeAt(b + 1),c3 = c.charCodeAt(b + 2),a += String.fromCharCode((d & 15) << 12 | (c2 & 63) << 6 | c3 & 63),b += 3);return a}
}function get_data(data,nonce) {var B = new Base(), T = data.split(''), N = nonce, len, locate, str;N = N.match(/\d+[a-zA-Z]+/g);len = N.length;while (len--) {locate = parseInt(N[len]) & 255;str = N[len].replace(/\d+/g, '');T.splice(locate, str.length)}T = T.join('');_v = JSON.parse(B.decode(T));console.log(_v.picture)return _v.picture
}

腾讯漫画(js逆向)相关推荐

  1. 腾讯爬虫python_【Python爬虫+js逆向】Python爬取腾讯漫画!

    前一段假期期间,博主已经自学完了Python反爬虫的相关内容,面对各大网站的反爬机制也都有了一战之力.可惜因实战经验不足,所以总体来说还是一个字--菜.前两天,在学习并实战爬取了博主最爱看的腾讯动漫后 ...

  2. JS逆向之x讯视频wasm的ckey分析

    篇幅有限 完整内容及源码关注公众号:ReverseCode,发送 冲 起因 最近对腾讯视频下手了,因为公众号中的视频来源都是腾讯视频,也就是说通过2分钟阅读本文,腾讯视频下整站视频都可以下载下来,也是 ...

  3. js rsa解密中文乱码_建议收藏 | 最全的 JS 逆向入门教程合集

    点击上方"咸鱼学Python",选择"加为星标" 第一时间关注Python技术干货! 嘿,大家好,截止今天咸鱼零零散散分享爬虫.数据分析基础和 Web 的内容已 ...

  4. js 模拟点击_爬虫js逆向之无限debugger--抖音第三方数据分析平台的坑

    爬虫js逆向系列 我会把做爬虫过程中,遇到的所有js逆向的问题分类展示出来,以现象,解决思路,以及代码实现,这三方面解析,供大家参考爬虫认知 在程序猿所有的方向中,爬虫是离money最近的一个方向,你 ...

  5. QQ音乐JS逆向爬虫,我用python全都爬!

    爬虫高级必然JS逆向,QQ音乐爬虫就是一个很好的练手,读完学会了直接在你女朋友面前装一手,读完你将收获到,QQ音乐JS逆向,sign参数获取,songmid参数获取,vkey参数获取,selenium ...

  6. [Python] js逆向初探: 某麦榜单

    系列文章目录 [Python] js逆向初探: 某麦榜单 文章目录 系列文章目录 免责声明 前言 分析 通用的抓包方法... 偷懒作弊的抓包方法 万恶之源 总结 免责声明 本篇文章仅用学习交流和日常记 ...

  7. 助力小白常见JS逆向乱杀喂饭教程——Url加密

    专栏作者:战俘巡航,爬虫工程师,具有丰富的Python数据采集经验. 最近,读者希望公众号能出一些JS逆向的干货教程,所以,安排! 首先不知道能写多少简单易懂的逆向内容供小白们吸收学习,目前先不讲混淆 ...

  8. 【JS 逆向百例】webpack 改写实战,G 某游戏 RSA 加密

    关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途 ...

  9. 【JS逆向百例】某音乐网分离式 webpack 非 IIFE 改写实战

    关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 文章目录 声明 逆向目标 逆向过程 抓包分析 参数逆向 webpack 改写 IIFE 传数组 ...

  10. 【JS 逆向百例】Fiddler 插件 Hook 实战,某创帮登录逆向

    关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途 ...

最新文章

  1. 开始喜欢Python了
  2. DropDownList 控件不能触发SelectedIndexChanged 事件的另一个原因
  3. Node.js_1.1
  4. 去哪儿-19-detail-ajax
  5. 以算法重构视频技术前沿,超分辨率算法那些事
  6. 史上最全的ASP.NET MVC路由配置,以后RouteConfig再弄不懂神仙都难救你啦~
  7. SQL SERVER CHAR ( integer_expression )各版本返回值差异的案例
  8. 【Java】用随机数打印hello world
  9. opencv实现xld_halcon学习网
  10. 线性规划与整数规划小结
  11. 解决百度文库复制问题 非VIP也能复制文字
  12. Peer-To-Peer 综述(P2P技术综述)
  13. 软件架构设计原则--开闭原则
  14. css横向导航栏布局,CSS04--对齐、 布局、导航栏
  15. win7任务计划提示”该任务映像已损坏或已篡改“
  16. 分布式理论分布式ID生成大全
  17. 清默网络——负载均衡
  18. 达梦数据库全文索引使用示例
  19. 初中算题可以使用计算机吗,初中生计算机考试试题总汇
  20. 为什么修改jsp不用重启tomcat,而修改servlet要重启tomcat

热门文章

  1. Qlik view 连接数据库
  2. MacOS 系统盘瘦身,对/System/Library开刀
  3. python简单画玫瑰_用python画一朵玫瑰给你
  4. 小白学习MySQL - MySQL会不会受到“高水位”的影响?
  5. 电压源 电流源 置零时的作用
  6. 开发3D游戏建模都需要哪些软件?软件繁多,如何从中挑选学习?
  7. 基于Python实现的HTTP代理服务器设计
  8. AURIX Development Studio软件介绍
  9. Balanced Substring
  10. 【U8】固定资产模块卡片管理栏目设置中没有“凭证号”栏目