利用chrome调用本地程序破解图片验证码
background.js

var port = null, tabId, fname = "vcode.chrome.v1.item.01";
//对应注册表HKEY_CURRENT_USER\Software\Google\Chrome\NativeMessagingHosts
var hostname = 'com.dbing.net.host'; //onNativeDisconnect
function onDisconnected() {
port = null;
} //
function connect(data) {
port = chrome.runtime.connectNative(hostname);
port.onDisconnect.addListener(onDisconnected);
port.onMessage.addListener(onNativeMessage);
port.postMessage(data);
} function onNativeMessage(msg) {
chrome.tabs.sendMessage(tabId, { cmd: 'setCode', code:msg });
}// 监听消息
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
tabId= sender.tab['id'];
if (!request.cmd) return;
if (request.cmd=='getCode')
connect(request.url);
});

test.js

var nodeCode = document.getElementsByClassName('login-code');
var nodeImg, timer;
send(); function send() {
if (nodeCode && nodeCode[0] && nodeCode[0].nextElementSibling) { nodeCode[0].children[0].innerText = '';
nodeImg = nodeCode[0].nextElementSibling;
nodeImg.onload = function () { sendMsg(); }
}
};
function sendMsg() {
var r = nodeImg.getBoundingClientRect();
var rect = { x: r.x, y: r.y + window.outerHeight - window.innerHeight, width: r.width, height: r.height }
var rs = Math.round(rect.x) + ',' + Math.round(rect.y) + ',' + Math.round(rect.width) + ',' + Math.round(rect.height);
chrome.runtime.sendMessage({ cmd: 'getCode', url: rs });
} // 监听消息
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) { if (request.cmd == 'setCode') {
console.log('setCode,login-code.length:', nodeCode.length)
if (!nodeCode) return;
nodeCode[0].children[1].value = request.code;
sendResponse({ status: 1 });
} });

app.json

{
"name": "com.dbing.net.host", //名称需跟注册表的项名称一致
"description": "open host pro",
"path": "C:\\Users\\Administrator\\Pro\\Demo\\Pro.AI\\bin\\Debug\\Pro.AI.exe",
"type": "stdio",
"allowed_origins": [
"chrome-extension://blejflebmbmpebolcigedgkclijabeop/"
]
}

manifest.json

{
"name": "本地管道通信", //名称
"description": "chrome.本地通讯.管道流", //介绍
"version": "1.0.1", //版本
"manifest_version": 2, //必须为2 "permissions": [
//必须,定义权限,需要和本地应用程序通信
"nativeMessaging",
"downloads"
], "content_scripts": [
{
"matches": [ "*://*.google.com/*" ],
"js": [ "test.js" ],
"run_at": "document_end"
}
], "background": { "scripts": [ "background.js" ] }
}

Chrome插件:本地程序实现验证码破解(浏览器与本地进程通信)的更多相关文章

  1. Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率..

    Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率.. 1. hybrid App 1 1.1. Hybrid Ap ...

  2. 网页调用本地程序(Windows下浏览器全兼容)

    用网页调用本地应用程序的思路是,先进行注册表注册自定义一个URL Protocol协议,再利用URL Protocol实现网页调用本地应用程序. 1.先写一个注册表文件,将其保存为.reg后缀的注册表 ...

  3. 制作chrome插件/扩展程序,禁止谷歌浏览器访问某些网站

    简单地说,浏览器插件,可以大大的扩展你的浏览器的功能.包括但不仅限于这些功能: 捕捉特定网页的内容 捕捉HTTP报文 捕捉用户浏览动作,改变浏览器地址栏/起始页/书签/Tab等界面元素的行为 与别的站 ...

  4. C#注册URL协议,使用浏览器打开本地程序,类似网页上点了QQ交谈打开本地QQ客户端程序

    本教程适用于Windows系统 从浏览器上打开本地程序,主要用到了本地URL协议,其实主要就是改注册表 先建立一个项目,我建的是控制台项目 在Program.cs写2个静态方法用来添加注册表.移除注册 ...

  5. 通过私有协议Chrome浏览器页面打开本地程序

    近期方有这样的要求:这两个系统,根据一组Chrome开展,根据一组IE开展,需要Chrome添加一个链接,然后进入IE该系统的开发.这,需要Chrome跳转到创建一个链接IE浏览器指定的页面.同时也实 ...

  6. 开发一个简单的chrome插件-解析本地markdown文件

    准备软件环境 1. 软件环境 首先,需要使用到的软件和工具环境如下: 一个最新的chrome浏览器 编辑器vscode 2. 使用的js库 代码高亮库:prismjs https://prismjs. ...

  7. Windows和Mac浏览器启动本地程序

    前言 这几天有个需求,需要在IE上启动本地程序,就如下面一样. 一开始,我还以为IE有提供特殊的接口,类似上图中的“RunExe”,可以找了大半天觉得不对经(找不到该方法). 后来想想不对,这种方式是 ...

  8. 一个实现浏览器网页与本地程序之间进行双向调用的轻量级、强兼容、可扩展的插件开发平台—PluginOK中间件

    通过PluginOK中间件插件平台(原名本网通WebRunLocal)可实现在网页中的JavaScript脚本无障碍访问本地电脑的硬件.调用本地系统的API及相关组件,同时可彻底解决ActiveX组件 ...

  9. 利用chrome插件批量读取浏览器页面内容并写入数据库

    试想一下,如果每天要收集100页网页数据甚至更多.如果采用人工收集会吐血,用程序去收集也就成为一个不二的选择.首先肯定会想到说用java.php.C#等高级语言,但这偏偏又有个登陆和验证码,搞到无所适 ...

随机推荐

  1. nodejs--JWT 在前后端分离中的应用与实践

    nodejs--JWT 在前后端分离中的应用与实践 http://www.cnblogs.com/lidongyue/p/5269695.html

  2. Linux 常用命令二 pwd cd

    一.pwd命令 显示整个路径名: wang@wang:~$ pwd /home/wang 二.cd命令 切换到其他路径(相对路径方式): wang@wang:~$ cd workpalce/ wang ...

  3. bzoj 2245 [SDOI2011]工作安排【最小费用最大流】

    其实不用拆点,对于每个人我们假装他是\( s[i]+1 \)个点,可以由他向T点分别连\( s[i]+1 \)条边,容量为\( t[i][j]-t[i][j-1]\),由S点向所有产品i连容量为c[i ...

  4. spoj 287 NETADMIN - Smart Network Administrator【二分+最大流】

    在spoj上用题号找题就已经是手动二分了吧 把1作为汇点,k个要入网的向t连流量为1的边,因为最小颜色数等于最大边流量,所以对于题目所给出的边(u,v),连接(u,v,c),二分一个流量c,根据最大流 ...

  5. Hdu 5336 XYZ and Drops (bfs 模拟)

    题目链接: Hdu 5336 XYZ and Drops 题目描述: 有一个n*m的格子矩阵,在一些小格子里面可能会有一些水珠,每个小水珠都有一个size.现在呢,游戏开始咯,在一个指定的空的小格子里 ...

  6. LightOj 1220 Mysterious Bacteria

    题目大意: 给出一个x,求满足x = b^p,p最大是多少? 解题思路: x可以表示为:x = p1^e1 * p2^e2 * p3^e3 ....... * pn^en. p = gcd (e1,e ...

  7. VK Cup 2018 - Round 1 A. Primal Sport

    A. Primal Sport time limit per test 1.5 seconds memory limit per test 256 megabytes input standard i ...

  8. jQuery Ajax使用实例

    <script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.js"></script> <scr ...

  9. 可以装一把——c#中手动添加控件

    TextBox txt = new TextBox(); //文本框控件 //如果想在移动控件位置 point(x,y) txt.Location = new Point(50,50); this.C ...

  10. 【原】无脑操作:Eclipse + Maven + jFinal + MariaDB 环境搭建

    一.开发环境 1.windows 7 企业版 2.Eclipse IDE for Enterprise Java Developers  Version: 2019-03 (4.11.0) 3.JDK ...