您的位置:首页 > 科技 > 能源 > 邮箱域名是什么_大连建设工程信息网华宇凤凰城东侧市政管网配套工程_推广引流平台app大全_活动营销的方式有哪些

邮箱域名是什么_大连建设工程信息网华宇凤凰城东侧市政管网配套工程_推广引流平台app大全_活动营销的方式有哪些

2025/4/3 6:30:30 来源:https://blog.csdn.net/jerry3747/article/details/146948305  浏览:    关键词:邮箱域名是什么_大连建设工程信息网华宇凤凰城东侧市政管网配套工程_推广引流平台app大全_活动营销的方式有哪些
邮箱域名是什么_大连建设工程信息网华宇凤凰城东侧市政管网配套工程_推广引流平台app大全_活动营销的方式有哪些

某书x-s、x-t快速破解法

  • 前言
  • 破解步骤
    • 扣js代码
    • 注入js到浏览器

前言

今天突然有个临时需求,从社交平台和电商平台爬取一些内容的评论做词云,一阵翻箱倒柜找到了24年9月之前的某书爬虫项目,记得当时是还原了某书web端全套算法,也迭代过几个版本,wed更新太快,后面实在懒得还原算法了就开始找偷懒的办法,不还原算法同时又能获取到加密参数那就是rpc了,但是rpc必须要打断点然后再注入js代码,使用起来异常的麻烦。突然灵光一闪,扣代码要补环境,那给它一个真实的浏览器环境不就不用补环境了嘛,然后把加密方法绑定到windows对象上不就能随便调用了。下面通过实战演示一下破解思路。

破解步骤

扣js代码

搜索_webmsxyw,会定位到如下图所示位置在这里插入图片描述
var v = f(p, u) || {};这行代码就是调用加密方法返回x-s、x-t,参数p是api,u是data,f方法就是window._webmsxyw,_webmsxyw在另外一个js文件中,在这里插入图片描述
将整个js文件的内容复制下来保存好。

注入js到浏览器

使用DrissionPage打开一个浏览器,把前面扣到的js已经是把_webmsxyw方法绑定到window对象上了,只需要在后面加上调用代码并传入参数,就可以注入到浏览器中执行了。以下是完整代码,

import copy
import json
import os
from DrissionPage import ChromiumPage
from DrissionPage._configs.chromium_options import ChromiumOptions
from configs.config import data_pathclass RunJS():def __init__(self):self.op = ChromiumOptions().set_paths(local_port=9111, user_data_path=f'C:\\DrissionPageCache\\xhs')self.page = ChromiumPage(self.op)self.page.get("https://www.xiaohongshu.com/explore")js_path = os.path.join(data_path, 'x_s_20240809.js')with open(js_path, 'r') as f:self.js = f.read()def get_x_s(self, api:str, json_data:dict):js = copy.copy(self.js)js2 = """var c = "%s";var i = %s;var result = window._webmsxyw(c,i);return result"""%(api,json.dumps(json_data))js += '\n' + js2js_path2 = os.path.join(data_path, 'x_s_20240809_new.js')with open(js_path2, 'w') as f:f.write(js)result = self.page.run_js_loaded(js_path2)os.remove(js_path2)return result['X-s'],result['X-t']def close_chrome(self):self.page.quit()def get_cookies(self):cookie_list = self.page.cookies()item = {}for i in cookie_list:item[i['name']] = i['value']return itemif __name__ == '__main__':api = '/api/sns/web/v1/feed'json_data = {"source_note_id": "646a33f10000000013012e4f","image_formats": ["jpg","webp","avif"],"extra": {"need_body_topic": "1"},"xsec_source": "pc_feed","xsec_token": "ABvV_W-E_VoxQSWCz1XendH0NXGtwiekStLcfvJ-NYoIs="}d = RunJS()data = d.get_x_s(api,json_data)print(data)

执行结果
在这里插入图片描述
这个案例中原始js代码已经把加密方法绑定到window对象上,所以可以直接调用,如果遇到只有打断点才能调用的情况就需要添加绑定代码再注入浏览器,实际上这个案例压根也不需要扣代码,直接打开浏览器进入目标网站主页,就可以直接调用window._webmsxyw方法,以下是不扣js的完整代码

import copy
import json
import os
from DrissionPage import ChromiumPage
from DrissionPage._configs.chromium_options import ChromiumOptionsclass RunJS():def __init__(self):self.op = ChromiumOptions().set_paths(local_port=9111, user_data_path=f'C:\\DrissionPageCache\\xhs')self.page = ChromiumPage(self.op)self.page.get("https://www.xiaohongshu.com/explore")def get_x_s(self, api:str, json_data:dict):js = """var c = "%s";var i = %s;var result = window._webmsxyw(c,i);return result"""%(api,json.dumps(json_data))result = self.page.run_js_loaded(js)return result['X-s'],result['X-t']def close_chrome(self):self.page.quit()def get_cookies(self):cookie_list = self.page.cookies()item = {}for i in cookie_list:item[i['name']] = i['value']return itemif __name__ == '__main__':api = '/api/sns/web/v1/feed'json_data = {"source_note_id": "646a33f10000000013012e4f","image_formats": ["jpg","webp","avif"],"extra": {"need_body_topic": "1"},"xsec_source": "pc_feed","xsec_token": "ABvV_W-E_VoxQSWCz1XendH0NXGtwiekStLcfvJ-NYoIs="}d = RunJS()data = d.get_x_s(api,json_data)print(data)

运行结果
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com