文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

爬虫篇之JS逆向破解

2024-12-01 19:39

关注

爬虫中很重要的一个点就是JS的逆向破解加密,今天我们来浅析一下。

背景

先简单介绍一下为什么要有JS解密,目前大部分网页都是采用的前后端分离的方式,所以呢,爬虫的一般破解之道都是从后端接口来做文章,进行突破。

不过道高一尺,魔高一丈,网页开发会对API接口请求参数进行加密,来增加爬虫抓取的门槛。为此可以通过js逆向来分析破解加密方式,模拟浏览器发送请求获取接口数据。

当然,先说明,这篇文章并不是非常专业的JS解密,因为JS的解密涉及很多种,多种行为的解密,本文只是对其中一种情况进行简单的介绍。

来吧,让我们一起简单学习一下。

上面这个图是请求翻译的全过程。

我们能清晰的看到这是直接以表单的形式提交的数据到后端API层,然后API来执行翻译的作用。

接下来我们用python模拟以下这个过程。

一定要注意的是,请求头写全,包括cookie和user-agent这些,还有下面的params一定要按照网页中的来。

代码给到大家。

import requests
#请求头
headers = {
"Accept": "application/json, text/javascript, **; q=0.01",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-CN,zh;q=0.9",
"Connection": "keep-alive",
"Content-Length": "244",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"Cookie": "OUTFOX_SEARCH_USER_ID=-1506602845@10.169.0.82; JSESSIONID=aaaUggpd8kfhja1AIJYpx; OUTFOX_SEARCH_USER_ID_NCOO=108436537.92676207; ___rl__test__cookies=1597502296408",
"Host": "fanyi.youdao.com",
"Origin": "http://fanyi.youdao.com",
"Referer": "http://fanyi.youdao.com/",
"user-agent": appVersion,
"X-Requested-With": "XMLHttpRequest",
}
def r(e):
# bv
t = md5(appVersion.encode()).hexdigest()
# lts
r = str(int(time.time() * 1000))
# i
i = r + str(random.randint(0,9))
return {
"ts": r,
"bv": t,
"salt": i,
"sign": md5(("fanyideskweb" + e + i + "Ygy_4c=r#e#4EX^NUGUc5").encode()).hexdigest()
}
def fanyi(word):
data = r(word)
params = {
"i": word,
"from": "AUTO",
"to": "AUTO",
"smartresult": "dict",
"client": "fanyideskweb",
"salt": data["salt"],
"sign": data["sign"],
"lts": data["ts"],
"bv": data["bv"],
"doctype": "json",
"version": "2.1",
"keyfrom": "fanyi.web",
"action": "FY_BY_REALTlME",
}
response = requests.post(url=url,headers=headers,data=params)
#返回json数据
return response.json()
if __name__ == "__main__":
while True:
word = input("请输入要翻译的语句:")
result = fanyi(word)
#对返回的json数据进行提取,提取出我们需要的数据
r_data = result["translateResult"][0]
print(r_data[0]["src"])
print(r_data[0]["tgt"])
来源:左耳君内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯