Apk反编译之晋江小说阅读

反编译晋江的动力其实是想愉快地看小说。从晋江app下载到手机中的小说是后缀.jct被加密的文本文件,位于JinJiangReader/download/noveldown目录下。为了解密这些文件,便只能从反编译apk寻找加密方法入手。


这里使用的是反编译三件套apktool+dex2jar+jd-gui,具体反编译过程不再详述。


1.寻找文章显示页

首先,想到找到文章显示页(如下)对应的activity,猜测中间是一个TextView,找到对应的setText方法就能一直回溯找到解密算法部分。

文章显示页

通过查看Manifest.xml,发现绝大多数Activity位于com.example.jinjiangshucheng.ui包中。查看com.example.jinjiangshucheng.ui包,通过命名猜测和分析NovelPager_Act是文章显示页。这里吐槽一句不符合驼峰命名规则的下划线命名方式。

### 如何爬取和处理晋江小说的数据 #### 数据爬取方法 为了实现对晋江小说数据的爬取,通常会采用 Python 的 `requests` 和 `BeautifulSoup` 库来完成网络请求以及 HTML 解析的任务。以下是具体的实现方式: 通过发送 HTTP 请求访问目标页面并提取所需的信息,例如书名、作者、类型、简介等内容。由于网站可能存在反爬机制,因此需要设置合理的请求头(User-Agent),模拟浏览器行为以降低被封禁的风险[^1]。 ```python import requests from bs4 import BeautifulSoup headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } def fetch_jjwxc_data(url): response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') titles = [] authors = [] intros = [] title_tags = soup.find_all('a', class_='workName') # 假设这是存储书名的选择器 author_tags = soup.find_all('span', class_='authorName') # 假设这是存储作者名称的选择器 intro_tags = soup.find_all('div', class_='introContent') # 假设这是存储简介的选择器 for tag in title_tags: titles.append(tag.text.strip()) for tag in author_tags: authors.append(tag.text.strip()) for tag in intro_tags: intros.append(tag.text.strip()) return titles, authors, intros ``` 上述代码片段展示了如何利用 `requests` 获取网页内容并通过 `BeautifulSoup` 提取出特定字段的过程[^2]。 #### 数据保存至本地文件 一旦成功抓取到相关书籍信息之后,则可将其写入到本地文本文件当中以便后续查阅或者进一步分析操作之用。下面给出了一种简单的方式用于将结果导出成 TXT 文件形式存档: ```python def save_to_txt(titles, authors, intros, filename="jjwxc_books.txt"): with open(filename, mode='w+', encoding='utf-8') as f: for i in range(len(titles)): entry = f"Title: {titles[i]} \nAuthor: {authors[i]} \nIntro:\n{intros[i]}\n\n" f.write(entry) # 调用函数保存数据 save_to_txt(titles, authors, intros) ``` 此部分逻辑实现了逐条记录各个作品基本信息的功能,并按照一定格式排列好后统一输出给指定路径下的纯文字文档里[^3]。 #### 数据预处理建议 对于所获得原始素材而言,在正式进入统计建模阶段前往往还需要经历一系列清洗转换工序才能达到理想状态。比如去除冗余空白字符、标准化日期表达样式等等都是常见的必要步骤之一[^4]。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值