2024更新-有道翻译API逆向
初步准备 在准备对之前文章中内容复现时,发现快捷键无法打开开发人员工具,手动打开发现网页被关闭并退回到历史页面中,疑是使用了disable-dev-tools,需要参考之前文章解决。参考: disable-devtool绕过 本次目标主要针对的是普通翻译接口,如下所示,输入任意文字请求一次翻译结果: 观察到接口: [POST]https://dict.youdao.com/webtranslate 因为翻译无需登录等直接可用,先不关注Cookies。先来看表单和响应: 表单: data = { "i": "test", "from": "auto", "to": "", "useTerm": "false", "dictResult": "true", "keyid": "webfanyi",...
disable-devtool绕过
初识最近遇到一些网站,快捷键打不开开发人员工具,或是打开后,页面会返回上一页,变成空白页等。 在尝试勾选事件侦听器中的脚本拦截以及捕捉到的一些蛛丝马迹中,发现网站使用了以下开源项目: theajack/disable-devtool: Disable web developer tools from the f12 button, right-click and browser menu (github.com) 使用的网站示例: aHR0cHM6Ly9mYW55aS55b3VkYW8uY29tLw==(2024-09-03) 思路 首先需要勾选事件侦听器中的脚本选项,将脚本拦截住,然后通过搜索关键词定位到可能的脚本处,作进一步处理,例如HOOK,替换等。 一打开就空白页或退回到历史页面中?没关系,开发人员打开后勾选脚本,页面手动打开至目标页面即可。 关键词可以参考项目中的配置属性名。 在查看项目的文档时,发现在访问网页时携带一个参数可以避免被禁用开发者工具: 3.2 md5 与 tk 绕过禁用该库中使用 key 与 md5...
Scrapy爬虫框架初探
简介Scrapy官网 An open source and collaborative framework for extracting the data you need from websites. In a fast, simple, yet extensible way.来自官网介绍 Scrapy是用纯Python实现的,抓取网页数据并提取结构性数据而编写的应用框架,用途广泛,用户只需要定制开发几个模块即可轻松实现爬虫。 架构图(以下皆来自RUNOOB-Scrapy 入门教程): Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。 Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。 Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy...
JS RPC学习及实战
Sekkiro对官网做出调整,文章中的相关链接也做了对应更新,但其余内容依旧保持原样,所以文中内容可能已经过时,仅供思路参考。 介绍 RPC(Remote Procedure Call)中文名「远程过程调用」,又是一个很蹩脚的翻译。我们拆开理解下,「过程」也叫方法或函数,「远程」就是说方法不在当前进程里,而是在其他进程或机器上面,合起来 RPC 就是调用其他进程或机器上面的函数。——聊聊 Node.js RPC(一)— 协议 JS RPC是指在浏览器开启一个ws和go服务连接,以调用http接口的形式来通信,浏览器端收到调用通信执行原先设置好的js代码。可以用于js逆向调用加密函数直接返回结果,也可以用来直接获取数据。——Python网络爬虫之js逆向之远程调用(rpc)免去抠代码补环境简介 上次实战,其实就算是实现了一次JS RPC实战, 对于JS RPC,和爬虫一样,可以手搓,也可以选择成熟的第三方框架,这里推荐使用 Sekrio-官方文档 Sekiro SEKIRO...
Websocket在爬虫中的应用
介绍 WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议) 它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的 Websocket是一个持久化的协议 websocket约定了一个通信的规范,通过一个握手的机制,客户端和服务器之间能建立一个类似tcp的连接,从而方便它们之间的通信 在websocket出现之前,web交互一般是基于http协议的短连接或者长连接 websocket是一种全新的协议,不属于http无状态协议,协议名为”ws” 和HTTP都是基于tcp的,都是可靠性传输协议,都是应用层协议 WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息,但HTTP是单向的 WebSocket是需要浏览器和服务器握手进行建立连接的,而http是浏览器发起向服务器的连接,服务器预先并不知道这个连接 JS实现js websocket主要有以下几个方法: //连接发生错误的回调方法websocket.onerror = function () { ...
octet-stream及实战
简介 当浏览器在请求资源时,会通过http返回头中的content-type决定如何显示/处理将要加载的数据,如果这个类型浏览器能够支持阅览,浏览器就会直接展示该资源,比如png、jpeg、video等格式。在某些下载文件的场景中,服务端可能会返回文件流,并在返回头中带上Content-Type: application/octet-stream,告知浏览器这是一个字节流,浏览器处理字节流的默认方式就是下载。 application/octet-stream是应用程序文件的默认值。意思是未知的应用程序文件 ,浏览器一般不会自动执行或询问执行。浏览器会像对待,设置了HTTP头Content-Disposition值为 attachment...
JS混淆学习及实战
简介 JavaScript 压缩即去除 JavaScript 代码中的不必要的空格、换行等内容或者把一些可能公用的代码进行处理实现共享,最后输出的结果都被压缩为几行内容,代码可读性变得很差,同时也能提高网站加载速度。 如果仅仅是去除空格换行这样的压缩方式,其实几乎是没有任何防护作用的,因为这种压缩方式仅仅是降低了代码的直接可读性。如果我们有一些格式化工具可以轻松将 JavaScript 代码变得易读,比如利用 IDE、在线工具或 Chrome 浏览器都能还原格式化的代码。 目前主流的前端开发技术大多都会利用 Webpack 进行打包,Webpack 会对源代码进行编译和压缩,输出几个打包好的 JavaScript 文件,其中我们可以看到输出的 JavaScript 文件名带有一些不规则字符串,同时文件内容可能只有几行内容,变量名都是一些简单字母表示。这其中就包含 JavaScript 压缩技术,比如一些公共的库输出成 bundle 文件,一些调用逻辑压缩和转义成几行代码,这些都属于 JavaScript 压缩。另外其中也包含了一些很基础的 JavaScript...
国密(SM)系列逆向学习及实战
简介 国密算法,即国家商用密码算法。是由国家密码管理局认定和公布的密码算法标准及其应用规范,其中部分密码算法已经成为国际标准。如SM系列密码,SM代表商密,即商业密码,是指用于商业的、不涉及国家秘密的密码技术。——国密算法介绍 例如SM4:我国SM4分组密码算法正式成为ISO/IEC国际标准 这里常用的为SM2和SM4算法 SM2简介 它是基于椭圆曲线密码的公钥密码算法标准,其秘钥长度256bit,包含数字签名、密钥交换和公钥加密,用于替换RSA/DH/ECDSA/ECDH等国际算法。可以满足电子认证服务系统等应用需求,由国家密码管理局于2010年12月17号发布。SM2采用的是ECC 256位的一种,其安全强度比RSA 2048位高,且运算速度快于RSA。——国密算法介绍 JS实现JS已有较为成熟的实现库,这里推荐sm-crypto,可实现SM2、SM3和SM4 上面链接的NPM库间接已给出示例,这里直接照搬:密钥对 const sm2 = require('sm-crypto').sm2let keypair...
JS逆向-关于Webpack的学习
Webpack打包介绍 ——RUNOOB-Webpack入门教程Webpack...