21.网络爬虫—js逆向详讲与实战

这篇具有很好参考价值的文章主要介绍了21.网络爬虫—js逆向详讲与实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言
🏘️🏘️个人简介:以山河作礼。
🎖️🎖️:Python领域新星创作者,CSDN实力新星认证,阿里云社区专家博主
📝​📝第一篇文章《1.认识网络爬虫》获得全站热榜第一,python领域热榜第一
🧾 🧾第四篇文章《4.网络爬虫—Post请求(实战演示)》全站热榜第八
🧾 🧾第八篇文章《8.网络爬虫—正则表达式RE实战》全站热榜第十二
🧾 🧾第十篇文章《10.网络爬虫—MongoDB详讲与实战》全站热榜第八领域热榜第二
🧾 🧾第十三篇文章《13.网络爬虫—多进程详讲(实战演示)》全站热榜第十二
🧾 🧾第十四篇文章《14.网络爬虫—selenium详讲》测试领域热榜第二十
🧾 🧾第十六篇文章《16.网络爬虫—字体反爬(实战演示)》全站热榜第二十五
🧾 🧾第十九篇文章《19.网络爬虫—照片管道》全站综合热榜第十二。
🧾 🧾第二十篇文章《20.网络爬虫—Scrapy-Redis分布式爬虫》全站综合热榜第二十五名,大数据领域第六名
🎁🎁《Python网络爬虫》专栏累计发表二十篇文章,上榜九篇。欢迎免费订阅!欢迎大家一起学习,一起成长!!
💕💕悲索之人烈焰加身,堕落者不可饶恕。永恒燃烧的羽翼,带我脱离凡间的沉沦。



🎁🎁:文章末尾扫描二维码可以加入粉丝交流群

js逆向

📑 📑在这个大数据时代,我们眼睛所看到的百分之九十的数据都是通过页面呈现出现的,不论是PC端、网页端还是移动端,数据渲染还是基于html/h5+javascript进行的,而大多数的数据都是通过请求后台接口动态渲染的。而想成功的请求成功互联网上的开放/公开接口,必须知道它的URL、Headers、Params、Body等数据是如何生成的。

JavaScript逆向的详细讲解

📑 📑JavaScript逆向工程是指通过分析JavaScript代码和运行行为来理解程序的内部机制。这种技术可以用于破解JavaScript程序的加密和混淆,以及获取程序的逻辑和数据等信息。
以下是JavaScript逆向的详细讲解

1. JavaScript逆向工程的基本原理

📑 📑JavaScript逆向工程的基本原理是通过分析JavaScript代码和运行行为来理解程序的内部机制。这种技术可以用于破解JavaScript程序的加密和混淆,以及获取程序的逻辑和数据等信息。
JavaScript逆向工程通常包括以下步骤:

1)获取JavaScript代码
可以使用浏览器的开发人员工具或其他工具来获取JavaScript代码。

2)分析JavaScript代码
可以使用代码编辑器或其他工具来分析JavaScript代码,包括查找函数、变量、常量和操作符等。

3)调试JavaScript代码
可以使用浏览器的开发人员工具或其他工具来调试JavaScript代码,包括断点调试、单步调试和变量监视等。

4)破解JavaScript代码
可以使用反混淆和反编译工具来破解JavaScript代码,以获取程序的逻辑和数据等信息。

2. JavaScript逆向工程的应用场景

JavaScript逆向工程可以应用于以下场景

1)破解加密和混淆的JavaScript程序:JavaScript逆向工程可以破解加密和混淆的JavaScript程序,以获取程序的逻辑和数据等信息。

2)调试和测试JavaScript程序:JavaScript逆向工程可以帮助开发人员调试和测试JavaScript程序,以发现程序中的错误和问题。

3)优化JavaScript程序的性能和安全性:JavaScript逆向工程可以帮助开发人员优化JavaScript程序的性能和安全性,以提高程序的质量和可靠性。

4)研究JavaScript程序的内部机制:JavaScript逆向工程可以帮助研究人员研究JavaScript程序的内部机制,以发现其中的漏洞和安全问题。

3. JavaScript逆向工程的注意事项

在进行JavaScript逆向工程时,需要注意以下事项:

1)遵守法律法规
JavaScript逆向工程可能涉及版权、知识产权和隐私等问题,需要遵守相关的法律法规。

2)保护个人隐私
在分析JavaScript程序时,需要遵守个人隐私的原则,不得获取个人信息和敏感信息。

3)避免滥用JavaScript逆向技术
JavaScript逆向技术可以用于破解和攻击,需要避免滥用。

4)保护JavaScript程序的安全性
在进行JavaScript逆向工程时,需要保护JavaScript程序的安全性,不得泄露JavaScript程序的机密信息和漏洞。

5)学习和研究JavaScript逆向技术
JavaScript逆向技术是一种有用的技术,需要学习和研究,以提高自己的技能和知识水平。

实战是学习知识最快的途径,下面进行实战演示帮助理解学习。

实战演示

有道翻译

有道翻译

浏览器:谷歌浏览器

21.网络爬虫—js逆向详讲与实战

右键检查,输入需要翻译的内容,然后开始抓包

21.网络爬虫—js逆向详讲与实战
21.网络爬虫—js逆向详讲与实战

21.网络爬虫—js逆向详讲与实战

🎯点击翻译,我们得到两个数据,一个是key,请求方式是post,状态是200
载荷是西瓜,预览里面出现success,表示翻译成功

21.网络爬虫—js逆向详讲与实战

21.网络爬虫—js逆向详讲与实战
21.网络爬虫—js逆向详讲与实战

🎯还有一个文件是webtranslate,请求方法同样是post,状态是200,载荷里面有西瓜两个字和一些参数,预览和响应里面是一串加密的数据。

🎯接下来敲代码来获取文件,然后来破解数据

# coding = utf-8
import crawles

url = 'https://dict.youdao.com/webtranslate'

cookies = {
    'OUTFOX_SEARCH_USER_ID': '-312652410@10.108.162.134',
    'OUTFOX_SEARCH_USER_ID_NCOO': '42958927.495580636',
}

headers = {
    'Accept': 'application/json, text/plain, */*',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Cache-Control': 'no-cache',
    'Connection': 'keep-alive',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Origin': 'https://fanyi.youdao.com',
    'Pragma': 'no-cache',
    'Referer': 'https://fanyi.youdao.com/',
    'Sec-Fetch-Dest': 'empty',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Site': 'same-site',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36',
    'sec-ch-ua': '\"Google Chrome\";v=\"113\", \"Chromium\";v=\"113\", \"Not-A.Brand\";v=\"24\"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '\"Windows\"',
}

data = {
    'i': '西瓜',
    'from': 'auto',
    'to': '',
    'domain': '0',
    'dictResult': 'true',
    'keyid': 'webfanyi',
    'sign': 'f522e5818a8497d9a329a93a522eaa2e',
    'client': 'fanyideskweb',
    'product': 'webfanyi',
    'appVersion': '1.0.0',
    'vendor': 'web',
    'pointParam': 'client,mysticTime,product',
    'mysticTime': '1683270687293',
    'keyfrom': 'fanyi.web',
}

response = crawles.post(url, headers=headers, data=data, cookies=cookies)
print(response.text)

运行结果:
21.网络爬虫—js逆向详讲与实战
🎯接下来我们可以通过多次发多次请求来观察哪些是变的,哪些是不变的数据

21.网络爬虫—js逆向详讲与实战
21.网络爬虫—js逆向详讲与实战
🎯经过对比,我们发现,signmysticTime这两个字段的参数是动态变化的

🎯参数大概分析之后,我们就找出对应的js文件,来分析一下js是如何处理的参数
选择文件,点击启动器,然后可以随便点击一个文件,然后点击它。

21.网络爬虫—js逆向详讲与实战

🎯输入sign后,如果出现多个,我们需要逐个观察,看哪一个符合要求
21.网络爬虫—js逆向详讲与实战

🎯我们在sign这里打上断点,然后点击翻译,进行抓包处理,得到e和t的值

e: "fsdsogkndfokasodnaso"
t: 1683272866426

21.网络爬虫—js逆向详讲与实战
🎯然后我们点击其他参数,获取数据
21.网络爬虫—js逆向详讲与实战
21.网络爬虫—js逆向详讲与实战
21.网络爬虫—js逆向详讲与实战
21.网络爬虫—js逆向详讲与实战
21.网络爬虫—js逆向详讲与实战
21.网络爬虫—js逆向详讲与实战
🎯接下来我们写代码,来得到sign的值

import time
t = 'fsdsogkndfokasodnaso'
e = time.time()
e = 1682603344052
d = 'fanyideskweb'
u = 'webfanyi'

data = f'client={d}&mysticTime={e}&product={u}&key={t}'

from hashlib import md5
m = md5()
m.update(data.encode('utf-8'))
nonce = m.hexdigest()
print(nonce)

21.网络爬虫—js逆向详讲与实战
🎯接下来对字符串进行解密,将解密后的字节码转换为utf-8编码的文本字符串

import hashlib
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
import base64
# 导入必要的模块和库

# pip install pycryptodome
# 将存放模块的文件(Crypto)改成大写开头(Crypto)

def decrypt( decrypt_str):
    key = "ydsecret://query/key/B*RGygVywfNBwpmBaZg*WT7SIOUP2T0C9WHMZN39j^DAdaZhAnxvGcCY6VYFwnHl"
    iv = "ydsecret://query/iv/C@lZe2YzHtZ2CYgaXKSVfsb7Y4QWHjITPPZ0nQp87fBeJ!Iv6v^6fvi2WN@bYpJ4"

    key_md5 = hashlib.md5((key).encode('utf-8')).digest()
    iv_md5 = hashlib.md5((iv).encode('utf-8')).digest()
    print('key_md5:', key_md5)
    print('iv_md5:', iv_md5)
    print()
    aes = AES.new(key=key_md5, mode=AES.MODE_CBC, iv=iv_md5)

    code = aes.decrypt(base64.urlsafe_b64decode(decrypt_str))
    return unpad(code, AES.block_size).decode('utf8')


print(decrypt(response.text))
设置密钥和初始向量
key = "ydsecret://query/key/B*RGygVywfNBwpmBaZg*WT7SIOUP2T0C9WHMZN39j^DAdaZhAnxvGcCY6VYFwnHl"
iv = "ydsecret://query/iv/C@lZe2YzHtZ2CYgaXKSVfsb7Y4QWHjITPPZ0nQp87fBeJ!Iv6v^6fvi2WN@bYpJ4"

这里定义了两个变量key和iv,分别表示密钥和初始向量。注意到这两个字符串已经被加密处理,因此在使用之前需要将它们进行解密。

对密钥和初始向量进行哈希处理
key_md5 = hashlib.md5((key).encode('utf-8')).digest()
iv_md5 = hashlib.md5((iv).encode('utf-8')).digest()

使用了哈希函数md5对密钥和初始向量进行处理。在处理之前,需要将密钥和初始向量从字符串类型转换为字节类型,并在处理后获取到它们的哈希值。

创建AES对象并解密消息
aes = AES.new(key=key_md5, mode=AES.MODE_CBC, iv=iv_md5)

code = aes.decrypt(base64.urlsafe_b64decode(decrypt_str))

创建了一个AES对象,使用了上一步中得到的哈希值作为密钥和初始向量的值,并使用CBC模式进行加密解密操作。然后,我们对传入的待解密字符串进行base64解码,再使用解密过程对其进行解密操作。

移除padding并返回结果
return unpad(code, AES.block_size).decode('utf8')

通过Crypto.Util.Padding.unpad函数移除了解密后的字节码中的padding,并通过.decode('utf8')将其转换为文本字符串类型。最终,我们从decrypt函数中返回了解密后的明文字符串。

🎯这段代码主要实现了一个AES-CBC加密算法的解密过程,使用了哈希函数增强了密钥和初始向量的安全性,并通过base64编解码和padding移除等操作对加密消息进行了处理。

运行结果如下
21.网络爬虫—js逆向详讲与实战
🎯后续可以对数据进行解析,提取出我们想要的数据。文章来源地址https://www.toymoban.com/news/detail-434781.html

到了这里,关于21.网络爬虫—js逆向详讲与实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【爬虫JS逆向-工具篇】浏览器内存漫游加密参数Hook实战教程

    【作者主页】: 吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感兴趣的朋友可以关注《爬虫JS逆向实战》,对分布式爬虫平台感兴趣的朋友可以关注《分布式爬虫平台搭建

    2024年02月22日
    浏览(21)
  • 14.网络爬虫—selenium详讲

    前言 : 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️:Python领域新星创作者,CSDN实力新星认证 📝​📝第一篇文章《1.认识网络爬虫》获得 全站热榜第一,python领域热榜第一 。 🧾 🧾第四篇文章《4.网络爬虫—Post请求(实战演示)》 全站热榜第八 。 🧾 🧾第八篇文章《8.网

    2023年04月14日
    浏览(18)
  • 22.网络爬虫—APP数据抓取详讲

    前言 : 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️: Python领域新星创作者,CSDN实力新星认证,阿里云社区专家博主 📝​📝第一篇文章《1.认识网络爬虫》获得 全站热榜第一,python领域热榜第一 。 🧾 🧾第四篇文章《4.网络爬虫—Post请求(实战演示)》 全站热榜第八 。

    2024年02月04日
    浏览(15)
  • 【爬虫逆向案例】某道翻译js逆向—— sign解密

    声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! 相信各位小伙伴在写爬虫的时候经常会遇到这样的情况,一些需要携带的参数一直在变化,今天逆向的这个网站某道翻译也如此: 可以发现变的就两个参数,一个 sign,一个是 m

    2024年02月15日
    浏览(16)
  • 逆向爬虫进阶实战:突破反爬虫机制,实现数据抓取

    随着网络技术的发展,网站为了保护自己的数据和资源,纷纷采用了各种反爬虫机制。然而,逆向爬虫技术的出现,使得我们可以突破这些限制,实现对目标网站的深入分析和抓取。本文将介绍逆向爬虫进阶实战的一些技巧和代码片段,帮助读者更好地理解和掌握这一技术。

    2024年02月04日
    浏览(12)
  • 【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密

    声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! 今天逆向的这个网站 某易云音乐 歌曲的评论列表 而要拿到评论列表爬虫发送的表单需要两个参数 params 和 encSecKey。这两个玩意是加密的,所以重点就是怎么搞定这两个参数。 话

    2024年02月14日
    浏览(16)
  • Python爬虫:抖音 JS XB逆向解析

    哈喽兄弟们,抖音现在有JS加密,以前的方法爬不了饿了,今天来实现一下某音短视频的JS逆向解析。 知识点 动态数据抓包`在这里插入代码片` requests发送请求 X-Bogus 参数逆向 环境模块 python 3.8               运行代码 pycharm 2022.3           辅助敲代码 requests 

    2024年02月08日
    浏览(22)
  • 爬虫+RPC+js逆向---直接获取加密值

    免责声明:本文仅做技术交流与学习,请勿用于其它违法行为;如果造成不便,请及时联系... 目录 爬虫+RPC+js逆向---直接获取加密值 target网址: 抓包 下断点 找到加密函数 分析参数 RPC流程 一坨: 二坨: 运行py,拿到加密值 优志愿_2024高考志愿填报系统-新高考志愿填报选科指南 数据往

    2024年04月14日
    浏览(7)
  • 爬虫逆向实战(二十)--某99网站登录

    主页地址:某99网站 1、抓包 通过抓包可以发现登录接口是AC_userlogin 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”可以发现 txtPassword 和 aws 是加密参数 请求头是否加密? 无 响应是否加密? 无 cookie是否加密? 无 1、看启动器 查看启动器发现有一个 NDUser_L

    2024年02月11日
    浏览(16)
  • 爬虫逆向实战(二十六)--某某学堂登录

    主页地址:某某学堂 1、抓包 通过抓包可以发现数据接口是Account/LoginPost 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现 pass 是加密参数 请求头是否加密? 无 响应是否加密? 无 cookie是否加密? 无 1、看启动器 查看启动器发现里面有一个 Login

    2024年02月11日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包