Python实现某网站小说数据内容下载, 实现JS逆向解密
2023-12-29 17:45:43
嗨喽,大家好呀~这里是爱看美女的茜茜呐
环境使用:
-
Python 3.10
-
Pycharm
模块使用:
-
requests --> pip install requests
-
execjs --> pip install pyexecjs
-
re
如何安装python第三方模块:
-
win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
-
在pycharm中点击Terminal(终端) 输入安装命令
👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~
python源码、视频教程、插件安装教程、资料我都准备好了,直接在文末名片自取就可
爬虫实现流程:
1. 先抓包分析数据在什么地方
- 打开开发者工具: F12
- 刷新网页
数据包: https://c13.shuqireader.com/pcapi/chapter/contentfree/
响应数据(小说内容): 加密一段内容
涉及JS逆向问题 -> 得到一段密文 -> 通过JS代码进行解密 -> 网页中显示正常文字
- 搜索关键字: ChapterContent 找到对应js文件
- 找到文件之后, 在对应代码位置打上断点
爬虫代码实现步骤:
1. 发送请求 -> 模拟浏览器对于url地址发送请求
模拟浏览器: 请求头 headers
url地址: 获取密文链接
2. 获取数据
3. 解析数据
4. 保存数据
遇到数据加密, 基本操作就这样子的…
整本小说采集: 多章数据内容获取
分析请求链接变化规律
chapterId(章节ID) / ut(貌似是小说章节更新时间) / sign(签名)
请求: 第一章: https://www.shuqi.com/reader?bid=8893196&cid=2055266 (小说章节)
能够得到 -> chapterId ut sign
代码展示
导入模块
'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6 否则可能不通过)
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
# 导入数据请求模块
import requests
# pip install pyexecjs
import execjs
# 导入正则表达式模块
import re
模拟浏览器
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}
“”"
获取所有小说章节ID / 小说名 / 章节名
“”"
link = 'https://www.shuqi.com/chapter?bid=8893196'
发送请求
link_data = requests.get(url=link, headers=headers).text
“”"
解析数据
-
re.findall(‘数据’, ‘数据源’)
从什么地方, 去找什么数据
找到你需要的数据, 前后都复制一段, 需要的内容用(.*?)
“”"
提取书名
name = re.findall('<title>(.*?)-书旗网</title>', link_data)[0]
章节ID 章节名
'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6 否则可能不通过)
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
info_list = re.findall('data-clog="chapter\$\$chapterid=(\d+)&bid=8893196">(.*)', link_data)
print(name)
print(info_list)
for循环遍历, 提取列表里面的元素
for chapterId, title in info_list:
print(chapterId, title)
“”"
获取 chapterId ut sign 请求参数
“”"
chapter_url = f'https://www.shuqi.com/reader?bid=8893196&cid={chapterId}'
发送请求+获取数据
chapter_data = requests.get(url=chapter_url, headers=headers).text
# print(chapter_data)
data = re.findall(f'UrlSuffix":"\?bookId=8893196&chapterId={chapterId}&ut=(\d+)&num=1&ver=1&aut=1702437625&sign=(.*?)",', chapter_data)
print(data)
“”"
获取密文内容
“”"
请求网址
url = 'https://c13.shuqireader.com/pcapi/chapter/contentfree/'
请求参数
'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6 否则可能不通过)
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
get_data = {
'bookId': '8893196',
'chapterId': chapterId,
'ut': data[0][0],
'num': '1',
'ver': '1',
'aut': '1702437625',
'sign': data[0][1],
}
print(get_data)
发送请求
response = requests.get(url=url, params=get_data, headers=headers)
获取响应数据
json_data = response.json()
print(json_data)
解析数据, 提取密文内容
ChapterContent = json_data['ChapterContent']
print(ChapterContent)
“”"
把密文数据转成明文 通过python执行js代码
“”"
读取js代码
js_file = open('书旗.js', encoding='utf-8').read()
编译JS代码
js_code = execjs.compile(js_file)
调用js代码函数
res = js_code.call('_decodeCont', ChapterContent)
字符串替换
content = res.replace('<br/>', '\n')
“”"
保存数据
“”"
'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6 否则可能不通过)
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
with open(f'{name}.txt', mode='a', encoding='utf-8') as f:
f.write(title)
f.write('\n')
f.write(content)
f.write('\n')
print(ChapterContent)
print(res)
print(content)
尾语
感谢你观看我的文章呐~本次航班到这里就结束啦 🛬
希望本篇文章有对你带来帮助 🎉,有学习到一点知识~
躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。
文章来源:https://blog.csdn.net/m0_72282564/article/details/135293592
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!