首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【JS逆向】保姆级图文教程,获取某名片网js逆向后的真实数据!

【JS逆向】保姆级图文教程,获取某名片网js逆向后的真实数据!

作者头像
二爷
发布2023-12-21 13:42:59
发布2023-12-21 13:42:59
2.2K00
代码可运行
举报
文章被收录于专栏:二爷记二爷记
运行总次数:0
代码可运行

爬与反爬,就相当于矛与盾,攻与防,与普通爬虫相比,反爬虫愈发普遍,相对于普通爬虫,逆向爬虫的困难度提升了不少,非常考验选手的专业素养,当然也难倒了本渣渣这种业余选手。

可能不少新人对于反爬比较畏惧,尤其是常见的JS反爬,需要涉及到多方面的知识,不是简单的post或者get请求可搞定,折腾到头秃。

下面带来本渣渣分享的保姆级图文教程,获取某名片网js逆向后的真实数据,后期会更新一系列的JS逆向反爬文章,欢迎关注本渣渣,同时强烈欢迎大佬哥大姐大带带本渣渣,真的学不会了。

网站地址:

代码语言:javascript
代码运行次数:0
运行
复制
aHR0cHM6Ly93d3cucWltaW5ncGlhbi5jb20vZmlub3NkYS9wcm9qZWN0L3BxdWVyeQ==

网站特征:

加密json数据段:encrypt_data

保姆级图文教程

所谓保姆级,那么截图一定要大而全,图片较多,建议wifi下浏览,土豪随意。

  1. 抓包分析数据,ctrl+f 搜索关键字 encrypt_data

2.关键js文件

3.打开这段js文件 open in sources panel

4.解析js格式

5.解析后格式效果

6.ctrl+f 继续搜索关键字 encrypt_data 可以看到有6处

7.找到最可疑的一处,也就是第5处,有关键字信息 return

8.打上断点,开始调试

9.刷新调试,可以看到断点处数据情况

10.console.log 打印输出 验证

11.很明显加密数据与post请求一致

12.一步步调试,断点下一步

13.数据出来了 t

14.console.log t 打印输出 验证

15.t.data 数据验证

16.关键加密函数 关键字 JSON.parse

17.点击进入查看函数

18.打上断点,调试

19.刷新网页调试,打印输出看到e的值

20.o函数

21.decode 函数

22.规整化格式函数

23.两个缺失的参数

24.解密数据验证查询

踩的坑

  1. 浏览器断点调试不会搞

多找相关教程,多调试,多尝试试试看!

  1. js代码未扣完全

未扣全的js代码段,一般运行js会报错,需要排查,当然前提是需要学习和熟悉一下js代码,console.log 打印输出多用!

一是代码未扣全,二是丢失参数,需要补齐!

  1. Python 调用js文件报错

这里报错 UnicodeDecodeError ‘gbk‘ codec can‘t decode byte 0x86 ,搜索找到答案,估计后期还会出现各种问题。

js文件运行效果:

python运行效果:

附运行代码参考:

代码语言:javascript
代码运行次数:0
运行
复制
# -*- coding: UTF-8 -*-
#@公众号:eryji
#https://www.qimingpian.com/finosda/project/pquery
#https://blog.csdn.net/NUT_0/article/details/129426006
#https://blog.csdn.net/NUT_0/article/details/129425382
import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding='utf-8')
# import execjs导入之前执行  修改encoding
import requests
import execjs


def get_data():
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"
    }
    url="https://vipapi.qimingpian.cn/search/productNewList"
    data={
        "page": 1,
        "num":20,
        "unionid":""
    }
    response=requests.post(url=url,headers=headers,data=data,timeout=6)
    print(response.status_code)
    print(response.json())
    encrypt_data=response.json()['encrypt_data']
    print(encrypt_data)
    # 读取js文件
    with open('demo.js', 'r',encoding='utf-8') as f:
        js_code = f.read()
    # 创建execjs的环境
    ctx = execjs.compile(js_code)
    # 调用js文件中的函数
    result = ctx.call('my_decrypt',encrypt_data)
    # 打印结果
    print(result)



def get_encrypt_data():
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"
    }
    url="https://vipapi.qimingpian.cn/search/productNewList"
    data={
        "page": 1,
        "num":20,
        "unionid":""
    }
    response=requests.post(url=url,headers=headers,data=data,timeout=6)
    print(response.status_code)
    print(response.json())
    encrypt_data=response.json()['encrypt_data']
    print(encrypt_data)

    return encrypt_data


def get_js(encrypt_data):
    env=execjs.get()

    with open(r'qmp.js','r',encoding='utf-8') as f:
        source=f.read()
        ctx=env.compile(source)

    result=ctx.call('s',encrypt_data)

    print(result)


def run():
    with open('qmp.js', encoding='utf-8-sig') as f:
        js_code = f.read()

    ctx = execjs.compile(js_code)
    print(ctx.call("s", get_encrypt_data()))


def main():
    encrypt_data=get_encrypt_data()
    get_js(encrypt_data)


if __name__=='__main__':
    #get_data()
    #run()
    main()

更多参考资料

  1. 群聊吃瓜引发的JS破解教程-咸鱼学python

https://mp.weixin.qq.com/s/Hxt39LSvNsqm17bgfrjddQ

  1. JavaScript逆向教程,不来了解一下么?-Python学习开发

https://mp.weixin.qq.com/s/UP3EiMIuUV5jSQZIP7FJ8A

  1. js逆向系列:企名片,获取js逆向后的真实数据!-shadowtalon

https://blog.csdn.net/shadowtalon/article/details/108563352

  1. 爬虫JS逆向思路之企名片(data解密)-NUT_0

https://blog.csdn.net/NUT_0/article/details/129426006

  1. python用execjs执行接js解密时报错 UnicodeDecodeError ‘gbk‘ codec can‘t decode byte 0x86-NUT_0

https://blog.csdn.net/NUT_0/article/details/129425382

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与SEO学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 保姆级图文教程
  • 踩的坑
  • 更多参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档