github: https://github.com/jxhczhl/JsRpc

简介:

通过远程调用(rpc)的方式免去抠代码补环境

原理:

在网站的控制台新建一个WebScoket客户端链接到服务器通信,调用服务器的接口 服务器会发送信息给客户端 客户端接收到要执行的方法执行完js代码后把获得想要的内容发回给服务器 服务器接收到后再显示出来

使用:

1)下载已经打包好的服务端软件, 在命令行中启动

window_amd64.exe

# 也可以指定配置文件
window_amd64.exe -c config.yaml # 可以根据自己的需求修改配置中的参数: 端口, 是否启用https/wss等配置项

2) 通过暴露的http的api进行访问

3)在浏览器中注入/resouces/JsEnv_De.js中的代码

4)建立通信

// 注入环境后连接通信
var demo = new Hlclient("ws://127.0.0.1:12080/ws?group=zzz");
// 可选
//var demo = new Hlclient("ws://127.0.0.1:12080/ws?group=zzz&clientId=hliang/"+new Date().getTime())

5)在脚本中调用接口就可以进行相关操作了

'''
js-rpc使用
'''
import json import requests js_rpc_server_url = 'http://localhost:12080' group_id = 'xxx'
def execjs():
"""传入js代码,让其在浏览器中执行"""
js_code = """
(function(){
console.log("this is a test")
return "执行成功"
})()
"""
url = js_rpc_server_url + '/execjs'
data = {
"group": group_id,
"code": js_code
}
res = requests.post(url, data=data)
print(res.text) def call_fun_no_param():
"""调用远程方法 - 无参数传递"""
url = js_rpc_server_url + '/go'
params = {
'group': group_id,
'action': 'hello', # 调用的方法名称
}
res = requests.get(url, params=params)
print(res.text) def call_fun_with_param():
"""调用远程方法 - 参数传递"""
url = js_rpc_server_url + '/go'
params = {
'group': group_id,
'action': 'hello2', # 调用的方法名称
'param': 123456, # 传递的参数
}
res = requests.get(url, params=params)
print(res.text) def post_call_fun_with_param():
"""post调用远程方法 - 参数传递"""
url = js_rpc_server_url + '/go'
data = {
'group': group_id,
'action': 'hello3', # 调用的方法名称
'param': json.dumps({"user": "xing", "status": "努力奋斗"}), # 传递的参数
}
res = requests.post(url, data=data)
print(res.text) def get_page_info():
"""
获取页面信息
页面html
页面cookie
:return:
"""
params = {
'group': group_id,
}
res = requests.get(js_rpc_server_url+'/page/html', params=params)
print('HTML:', res.json()) res = requests.get(js_rpc_server_url+'/page/cookie', params=params)
print('COOKIE:', res.json()) res = requests.get(js_rpc_server_url+'/list', params=params)
print('客户端信息:', res.json()) if __name__ == '__main__':
# execjs()
# call_fun_no_param()
# call_fun_with_param()
# post_call_fun_with_param()
get_page_info()

注意点: group的指定

js逆向之jsRpc的更多相关文章

  1. 网络爬虫之记一次js逆向解密经历

    1 引言 数月前写过某网站(请原谅我的掩耳盗铃)的爬虫,这两天需要重新采集一次,用的是scrapy-redis框架,本以为二次爬取可以轻松完成的,可没想到爬虫启动没几秒,出现了大堆的重试提示,心里顿时 ...

  2. 爬虫05 /js加密/js逆向、常用抓包工具、移动端数据爬取

    爬虫05 /js加密/js逆向.常用抓包工具.移动端数据爬取 目录 爬虫05 /js加密/js逆向.常用抓包工具.移动端数据爬取 1. js加密.js逆向:案例1 2. js加密.js逆向:案例2 3 ...

  3. 兄弟,你爬虫基础这么好,需要研究js逆向了,一起吧(有完整JS代码)

    这几天的确有空了,看更新多快,专门研究了一下几个网站登录中密码加密方法,比起滑块验证码来说都相对简单,适合新手js逆向入门,大家可以自己试一下,试不出来了再参考我的js代码.篇幅有限,完整的js代码在 ...

  4. 兄弟,别再爬妹子图了整点JS逆向吧--陆金所密码加密破解

    好久没有写爬虫文章了,今晚上得空看了一下陆金所登录密码加密,这个网站js加密代码不难,适合练手,篇幅有限,完整js代码我放在了这里从今天开始种树,不废话,直接开整. 前戏热身 打开陆金所网站,点击到登 ...

  5. 这个爬虫JS逆向加密任务,你还不来试试?逆向入门级,适合一定爬虫基础的人

    友情提示:在博客园更新比较慢,有兴趣的关注知识图谱与大数据公众号吧.这次选择苏宁易购登录密码加密,如能调试出来代表你具备了一定的JS逆向能力,初学者建议跟着内容调试一波,尽量独自将JS代码抠出来,实在 ...

  6. 爬虫必看,每日JS逆向之爱奇艺密码加密,今天你练了吗?

    友情提示:优先在公众号更新,在博客园更新较慢,有兴趣的关注一下知识图谱与大数据公众号,本次目标是抠出爱奇艺passwd加密JS代码,如果你看到了这一篇,说明你对JS逆向感兴趣,如果是初学者,那不妨再看 ...

  7. 通过JS逆向ProtoBuf 反反爬思路分享

    前言 本文意在记录,在爬虫过程中,我首次遇到Protobuf时的一系列问题和解决问题的思路. 文章编写遵循当时工作的思路,优点:非常详细,缺点:文字冗长,描述不准确 protobuf用在前后端传输,在 ...

  8. JS逆向-抠代码的第二天【手把手学会抠代码】

    今天的学习项目:沃支付:https://epay.10010.com/auth/login 清空浏览器缓存后,打开网页,输入手机号,密码222222,按照网站要求填入验证码(sorry,我没有账号密码 ...

  9. JS逆向-抠代码的第一天【手把手学会抠代码】

    首先声明,本人经过无数次摸爬滚打及翻阅各类资料,理论知识极其丰富,但是抠代码怎么都抠不会. 无奈之下,只能承认:这个活,需要熟练度. 本文仅对部分参数进行解析,有需要调用,请自行根据现实情况调整. 第 ...

  10. 我去!爬虫遇到JS逆向AES加密反爬,哭了

    今天准备爬取网页时,遇到『JS逆向AES加密』反爬.比如这样的: 在发送请求获取数据时,需要用到参数params和encSecKey,但是这两个参数经过JS逆向AES加密而来. 既然遇到了这个情况,那 ...

随机推荐

  1. RabbitMQ核心概念以及工作原理【转】

    RabbitMQ核心概念以及工作原理 我们来看看流行的RabbitMQ消息系统以及它是如何让你的系统之间进行解耦的. 英文原文   RabbitMQ 在这篇短文里,我们会介绍什么是RabbitMQ,它 ...

  2. 【YashanDB数据库】yasql登录有特殊字符@导致无法登录

    问题备机 Linux bash shell环境下,使用yasql登录数据库没有使用转义导致登录失败.报错信息如下 问题分析 linux特殊字符转义问题,多加几层转义可以解决问题. 解决办法 su - ...

  3. mysql修改编码utf8

    摘要:使用apt-get 命令安装的mysql默认不是utf8.在这里记录一下如何将编码修改成utf8. Linux学习笔记之--ubuntu中mysql修改编码utf8 一:查看mysql版本 1. ...

  4. 小tips:node版本管理工具nvm

    nvm是node版本管理工具 为了解决node各种版本存在不兼容现象 nvm是让你在同一台机器上安装和切换不同版本的node的工具 安装 nvm-windows 最新下载地址: https://git ...

  5. JavaScript – 单线程 与 执行机制 (event loop)

    前言 因为在写 RxJS 系列,有一篇要介绍 Scheduler.它需要对 JS 执行机制有点了解,于是就有了这里篇. 参考 知乎 – 详解JavaScript中的Event Loop(事件循环)机制 ...

  6. BOM – Navigator SendBeacon

    介绍 游览器专门做给 tracking 用的接口. 从前我们想 tracking 用户点击 anchor 是比较麻烦的. 因为 click 事件触发后, 想发 ajxax 去做 tracking re ...

  7. Driud——数据库连接池的使用

    Druid数据库连接池的使用 1. 导入 jar 包 jar包下载:Central Repository: com/alibaba/druid/1.1.12 (maven.org) 导入项目中:(复制 ...

  8. 技术储备--SPI接口硬件协议栈芯片W5500使用

    整体思路: 移植官方软件包代码, 配置好底层的SPI收发函数以及片选脚操作, 至于临界区操作函数,根据实际情况进行添加,也可以不加. 这就移植好了,就可以在我们自己的板子上跑官方的示例程序了. 官方软 ...

  9. 线段树与二分操作 vases and flowers ——hdu 4614

    操作1,的关键是找到第一只和最后一只空花瓶,完全可以利用二分法查找,找第一只花瓶可以在[X,N]内查找,第一个位置pos1,最后一只花瓶则在[POS1,N]中找,然后更新[POS1,POS2],全部置 ...

  10. 2.3.1 ChatGLM3简介与安装

    安装:pip install modelscope pip install torch==2.0.1 torchaudio torchvision -i https://pypi.tuna.tsing ...