某乎x-zse-96、x-zst-81最新通杀方案
原理
本方案是通过pyppeteer拦截并修改替换某乎生成x-zse-96、x-zst-81的主要js文件,达到无需扣js代码就能调用加密方法或参数的效果,这里只写了个demo,其他功能自己拓展
import os
import random
import asyncio
import logging
import requests
from pyppeteer import launch
try:import nest_asyncio
except:os.system('pip install nest_asyncio')import nest_asyncio
nest_asyncio.apply()
pyppeteer_level = logging.WARNING
logging.getLogger('pyppeteer').setLevel(pyppeteer_level)
logging.getLogger('websockets.protocol').setLevel(pyppeteer_level)
pyppeteer_logger = logging.getLogger('pyppeteer')
pyppeteer_logger.setLevel(logging.WARNING)class AtomExecutor(object):name = '知乎'base_url = 'https://www.zhihu.com/'def init(self):self.loop = asyncio.get_event_loop()self.browser = ''self.x96_js = 'D=window.zhimuhuan_x96=function(e){return __g._encrypt(encodeURIComponent(e))};exports.ENCRYPT_VERSION=A'self.x81_js = '{"x-zst-81":window.zhimuhuan_x81=f.xZst81})'def process_item(self, keyword):self.init()self.oppen_pyppeteer()self.loop.run_until_complete(self.go_to(keyword))async def go_to(self,keyword):url = "https://www.zhihu.com/search?type=content&q={}".format(keyword)try:await self.page.goto(url, options={'timeout': 1000 * 20})except:passawait asyncio.sleep(5)dimensions = await self.page.evaluate(f'varq=document.documentElement.scrollTop={555500}')check_96 = await self.page.evaluate("window.zhimuhuan_x96('{}')".format('460858518271c07cca7e6d7b9620ef8e'))check_81 = await self.page.evaluate('window.zhimuhuan_x81')return Trueasync def intercept_network_request(self, request):if 'static.zhihu.com/heifetz/main.app' in request.url and '.js' in request.url:response = requests.request("GET", request.url, headers=request.headers, timeout=20)html = response.textx96_code = 'D=function(e){return __g._encrypt(encodeURIComponent(e))};exports.ENCRYPT_VERSION=A'x81_code = '{"x-zst-81":f.xZst81})'app_js = html.replace(x96_code, self.x96_js).replace(x81_code,self.x81_js)resp = {"body": app_js, "headers": response.headers, "status": response.status_code}await request.respond(resp)elif request.resourceType in ['image', 'media', 'eventsource', 'websocket']:await request.abort()else:await request.continue_()def oppen_pyppeteer(self):try:asyncio.get_event_loop().run_until_complete(self.browser.close())except:passasyncio.get_event_loop().run_until_complete(self.PyppeteerMain())self.loop.run_until_complete(self.page.setRequestInterception(True))self.page.on('request', lambda request: asyncio.create_task(self.intercept_network_request(request)))async def PyppeteerMain(self):self.browser = await launch({'headless': True,'userDataDir': 'pyppeteer_data_for_cjt' ,'args': ['--no-sandbox','--start-maximized','--disable-gpu','--disable-blink-features=AutomationControlled','--user-agent={}'.format(self.get_ua()),],'dumpio': True})self.page = await self.browser.newPage()await self.page.setUserAgent(self.get_ua())await self.page.setViewport({"width": 1920,"height": 1080})@staticmethoddef get_ua():user_agent_list = ["Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0",'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36",]return random.choice(user_agent_list)if __name__ == "__main__":function = AtomExecutor()function.process_item('手机')
某乎x-zse-96、x-zst-81最新通杀方案相关推荐
- 阿里达摩院再造AI抗疫技术:20秒判读CT影像,识别准确率达96%
2020-02-16 13:22:25 允中 发自 凹非寺 量子位 报道 | 公众号 QbitAI 又是达摩院. 阿里方面最新消息,达摩院联合阿里云针对新冠肺炎临床诊断研发了一套全新AI诊断技术: ...
- 阿里达摩院再造AI抗疫技术:20秒判读CT影像,识别准确率达96%,河南率先启用...
允中 发自 凹非寺 量子位 报道 | 公众号 QbitAI 又是达摩院. 阿里方面最新消息,达摩院联合阿里云针对新冠肺炎临床诊断研发了一套全新AI诊断技术: AI可以在20秒内准确地对新冠疑似案例C ...
- 后端如何发出请求_gRPC系列(三) 如何借助HTTP2实现传输
本系列分为四大部分: gRPC系列(一) 什么是RPC? gRPC系列(二) 如何用Protobuf组织内容 gRPC系列(三) 如何借助HTTP2实现传输 gRPC系列(四) 框架如何赋能分布式系统 ...
- mysql切换到使用openssl_OpenSSL可以用来调试到MySQL服务器的SSL连接吗?
OpenSSL 1.1.1版(2018年9月11日发布)在 commit a2d9cfbac5d87b03496d62079aef01c601193b58中添加了对-starttls mysql的支持 ...
- python科学计数法转换_对比Python学习Go 基本数据结构
公众号文章不方便更新,可关注底部「阅读原文」博客,文章随时更新. 本篇是「对比 Python 学习 Go」[1] 系列的第三篇,本篇文章我们来看下 Go 的基本数据结构.Go 的环境搭建,可参考之前的 ...
- 大数据-平台-解决方案-基础架构一览
1.talkingdata (数据平台) 2.明略数据(解决方案) 3.百融金服(金融大数据) 4.国双科技(营销大数据) 5.国信优易(媒体大数据) 6.百分点(营销大数据) 7.华院集团(解决方 ...
- 数据库设计性能与效率
摘自Discuz官网:http://dev.discuz.org/wiki/index.php?title=%E7%BC%96%E7%A0%81%E8%A7%84%E8%8C%83#.E6.80.A7 ...
- Http Chunked Transfer Coding
分块传输编码 Chunked Transfer Coding 是超文本传输协议(HTTP)中的一种数据传输机制,允许HTTP由網頁伺服器发送给客户端应用( 通常是网页浏览器)的数据可以分成多个部分.分 ...
- 线程及同步的性能 – 线程池/ ThreadPoolExecutors/ ForkJoinPool
线程池和ThreadPoolExecutors 虽然在程序中可以直接使用Thread类型来进行线程操作,但是更多的情况是使用线程池,尤其是在Java EE应用服务器中,一般会使用若干个线程池来处理来自 ...
- 多种方式测量AMP328频率响应
测量电路系统,比如放大器的频率特性(包括幅频特性和相频特性)是电路测量中重要的内容.电路的频率特性的测量方法可以有以下几种形式: 扫频方法 注入白噪声方法 测量系统的单位冲激响应 本文下面利用实验室中 ...
最新文章
- SAP有用的知识(持续更新)
- 【Unity】publishing setting keystore作用
- 以云原生的名义,举办一次技术聚会
- 亲测:阿里云的高效云盘真没有声称那么好
- spring cloud常用组件介绍
- 【Linux系统编程】IO标准缓冲区
- 堆(Heap)大根堆、小根堆
- url的特殊字符编码 encodeURI编码
- XP添加权限时提示:无法显示用户选项对话框的解决方法!
- WebBrowser控件 打印2
- HDU 漫步校园 (记忆化搜索)
- 查询同一张表符合条件的某些数据的id拼接成一个字段返回
- linux jsp mysql_Linux JSP连接MySQL数据库
- MFC 单文档、多文档和对话框
- 数学作图工具_分别用于教学、排版、科研的数学作图软件
- matlab 改变图片比例尺,ps修改图片尺寸和比例尺方法图解
- win7计算机的用户名和密码,win7文件共享访问需要输入用户名和密码如何解决
- Vokenization:一种比GPT-3更有常识的视觉语言模型
- 云盼智能快递柜提供第三方便民服务平台,解决快递业终端服务困境
- python白_Python小白到底有多白?
热门文章
- 东南大学计算机考研面试题,东南大学复试常问问题今天的模拟面试总结
- Vue中使用swiper构建简易轮播图
- 小鸡啄米之React事件处理
- win怎么更换计算机密码错误,win10系统更改开机密码提示“Windows不能更改密码”的解决方法...
- 3D点云目标检测算法综述
- Blazor Day in China来喽,还不来赶紧报名参与
- 看一看golang的官方包:strings
- 网站调用服务器字体,网站调用字体库
- 面试官:请你讲讲Thread.sleep(0) 的作用?
- Git 命令行其实真的很好用