Firefox JS Executor – 支持易语言/C++火狐浏览器自动填表

Firefox JS Executor – 支持易语言/C++火狐浏览器自动填表

Firefox JS Executor - 支持易语言/C++火狐浏览器自动填表-可达鸭小栈
Firefox JS Executor – 支持易语言/C++火狐浏览器自动填表
此内容为免费资源,请登录后查看
0
积分资源免费
付费资源可享->
免费更新
协助部署
在线答疑
免费资源

前言:

在开发自动化填表工具时 易语言飓风队长等成熟模块只支持谷歌内核浏览器,却不支持火狐内核

而在实际项目中,很多客户指定使用火狐浏览器(特别是配合ADS指纹浏览器时),这就导致我们无法复用现有的易语言模块。 我就遇到了这个问题 导致单子没完成~~~

所以为了解决这个问题,我开发了 Firefox JS Executor —— 一个轻量级的工具(已打包为exe),让易语言/C++能够无缝调用火狐浏览器执行JS操作,实现自动化填表。

✨ 核心亮点

🔥 1. 自动穿透网页框架

火狐浏览器中很多页面都包含iframe框架,手动处理框架切换非常麻烦。本工具会自动枚举所有框架并执行JS,无论你的目标元素在哪个框架中,都能精准定位并操作。

🚀 2. 极简调用方式

只需要创建一个TCP服务器(端口19730),发送JSON文本即可执行JS,不需要任何复杂的组包拆包,直接明文传输:

{"type":"execute_js","js":"document.title"}

重点说明:本工具关注的是填表功能的实现,而不是网络安全。因为通信对象是本地的127.0.0.1,所以采用最简单的明文传输,没有任何加密和包头,方便各种语言调用。

🎯 3. 跨语言支持

  • 易语言:直接用服务器组件发送文本

  • C++:用socket发送字符串

  • 任何支持TCP的语言:只要连上19730端口,发送JSON即可

💻 4. 无感调用,隐藏窗口

已打包成exe,可直接静默运行,不显示任何窗口:

运行 (取运行目录 () + “\FirefoxAutoFill.exe”, 假, 1)
// C++调用示例
WinExec("FirefoxAutoFill.exe", SW_HIDE);

🔄 5. 多线程/多进程支持

可以同时启动多个exe客户端,对应多个不同的浏览器实例。每个客户端启动时会发送自己的进程ID(PID),调用端可以通过这个PID精准管理每个客户端。

命令详解

客户端启动时发送的注册信息

{
    "type": "register",
    "client_id": "a1b2c3d4",
    "pid": 12345,           // 进程ID,方便识别和管理
    "timestamp": 1234567890
}

可发送的命令列表

命令类型 描述 必填参数 可选参数
config 配置并连接浏览器 geckodriverport request_id
execute_js 执行JS代码 js frameidrequest_id
get_frames 获取所有框架信息 request_id
get_browser_info 获取浏览器信息 request_id
reconnect 重新连接其他浏览器 geckodriverport request_id
ping 心跳检测 request_id
disconnect 断开连接 request_id

request_id 的灵活运用

request_id 字段可以自由发挥,推荐使用线程ID,方便在多线程环境下快速识别响应来自哪个线程:

{
    "type": "execute_js",
    "js": "return document.title",
    "request_id": 1001      // 可以是线程ID、时间戳或自定义标识
}

客户端返回的响应会带上相同的 request_id

{
    "type": "response",
    "client_id": "a1b2c3d4",
    "pid": 12345,            // 附带进程ID,方便识别是哪个客户端
    "request_id": 1001,      // 原样返回
    "success": true,
    "result": "百度一下"
}

易语言调用示例

.版本 2
.支持库 spec

.子程序 启动浏览器并执行JS
.局部变量 port, 文本型
.局部变量 线程ID, 整数型

' 启动exe客户端
运行 (取运行目录 () + “\FirefoxAutoFill.exe”, 假, 1)
程序_延时 (2000)

' 获取ADS浏览器端口
port = ads.启动指定浏览器 (“k1agclhy”)
程序_延时 (5000)

' 下发配置连接浏览器(明文传输,直接发送文本)
服务器1.发送数据 (客户, 子文本替换 (#常量2, “端口”, port, , , 真), )

程序_延时 (5000)

' 执行JS
服务器1.发送数据 (客户, 子文本替换 (#常量3, “js代码”, “!!document.querySelector(\” + #引号 + “#chat-submit-button\” + #引号 + “)”, , , 真), )'跳转到百度
//常量2的内容
{
    "type": "config",
    "geckodriver": "C:\\Users\\Administrator\\AppData\\Roaming\\adspower_global\\cwd_global\\flower_144\\geckodriver.exe",
    "port": 端口,
    "request_id": 123456
}


//常量3的内容
{
    "type": "execute_js",
    "js": "js代码",
    "request_id": 123457
}
C++调用示例
#include <winsock2.h>
#include <windows.h>
#include <string>
#pragma comment(lib, "ws2_32.lib")

// 发送JSON到本地的FirefoxAutoFill客户端
void SendJS(const char* jsCode, int requestId) {
    WSADATA wsaData;
    WSAStartup(MAKEWORD(2, 2), &wsaData);
    
    SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);
    sockaddr_in server;
    server.sin_family = AF_INET;
    server.sin_port = htons(19730);
    server.sin_addr.s_addr = inet_addr("127.0.0.1");
    
    connect(sock, (sockaddr*)&server, sizeof(server));
    
    // 直接发送JSON文本,不用任何包头
    char cmd[512];
    sprintf(cmd, "{\"type\":\"execute_js\",\"js\":\"%s\",\"request_id\":%d}", jsCode, requestId);
    
    send(sock, cmd, strlen(cmd), 0);
    
    // 接收响应
    char buffer[4096] = {0};
    recv(sock, buffer, sizeof(buffer), 0);
    printf("收到: %s\n", buffer);
    
    closesocket(sock);
    WSACleanup();
}

int main() {
    // 启动exe(隐藏窗口)
    WinExec("FirefoxAutoFill.exe", SW_HIDE);
    Sleep(2000);
    
    // 执行JS
    SendJS("document.title", 1001);
    
    return 0;
}

💡 关于 geckodriver

配合ADS指纹浏览器使用时

ADS的API在启动浏览器时会直接返回geckodriver的完整路径,你只需要把这个路径填入config命令的geckodriver字段即可,无需额外下载配置。

如果不使用指纹浏览器

你需要自行下载geckodriver,下载地址:

  • 官方下载https://github.com/mozilla/geckodriver/releases

  • 选择版本:根据你的操作系统选择对应版本(Windows 64位下载win64.zip)

  • 配置方法:将下载的geckodriver.exe放到任意目录,然后在config命令中填写完整路径即可

🛠 技术原理

  • 基于Selenium + geckodriver 连接火狐浏览器(已打包为exe,无需Python环境)

  • 枚举所有框架并执行JS

  • Socket通信(127.0.0.1:19730)接收指令

  • 纯文本JSON传输,不组包不加密,简单到极致

  • 进程ID + 请求ID双重标识,完美支持多线程

📦 使用步骤

  1. 将FirefoxAutoFill.exe放在程序目录

  2. 启动exe客户端 

  1. 创建TCP连接到127.0.0.1:19730

  2. 直接发送JSON文本(不要加任何长度头或包头)

  3. 接收JSON响应(同样是不带包头的纯文本)

⚠️ 注意事项

  • 不需要任何组包拆包,直接发JSON字符串即可

  • 不需要考虑网络安全,因为是本地通信

  • exe文件不需要Python环境,直接运行

  • 需要提前安装好geckodriver(ADS用户无需操心)

  • 如果页面有多个框架,工具会自动处理,无需额外代码

  • 多线程使用时,用request_id区分不同线程的响应

  • 可以通过PID管理多个exe进程

🎁 写在最后

这个工具解决了我项目中火狐浏览器自动化的痛点,虽然功能简单(仅支持执行JS),但对于90%的填表需求完全够用。如果你也在为火狐浏览器自动化发愁,不妨试试这个方案。

设计理念就是:填表才是重点,通信越简单越好。所以采用了最直接的明文传输,任何语言只要会TCP发送字符串就能调用。

如果需要更加完善的填表支持(如元素ID查找、事件触发、文件上传、截图等复杂功能),可以找我开发定制版本。

© 版权声明
THE END
看完了?看完了愣着啊点赞干什么
点赞11赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容