利用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. Luogu P1396 营救【最小生成树/二分答案/最短路】 By celur925

    题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起了门…… 妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈妈丰富的经验告诉她小 ...

  2. linux下tab键在命令行情况下的强大

    tab自动补全命令,包括可以补全比较长的文件名,速度快的不是一点点

  3. 图的遍历---------开始开始-------o(∩_∩)o 哈哈

    图的遍历 深度优先搜索(Depth First Search , DFS) --深度优先搜索--我的理解就是分身术的另一种实现方法---用分身术将所有能看到的路都走一遍----这就是深度搜索--- 下 ...

  4. ls -l 详解

    ls -l 是文件系统的一个命令,用来查询当前路径的文件的属性.大小等详细信息

  5. DP(DAG) UVA 437 The Tower of Babylon

    题目传送门 题意:给出一些砖头的长宽高,砖头能叠在另一块上要求它的长宽都小于下面的转头的长宽,问叠起来最高能有多高 分析:设一个砖头的长宽高为x, y, z,那么想当于多了x, z, y 和y, x, ...

  6. 题解报告:hdu 1059 Dividing(多重背包、多重部分和问题)

    Problem Description Marsha and Bill own a collection of marbles. They want to split the collection a ...

  7. 题解报告:hdu 1789 Doing Homework again(贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1789 Problem Description Ignatius has just come back ...

  8. 189 Rotate Array 旋转数组

    将包含 n 个元素的数组向右旋转 k 步.例如,如果  n = 7 ,  k = 3,给定数组  [1,2,3,4,5,6,7]  ,向右旋转后的结果为 [5,6,7,1,2,3,4].注意:尽可能找 ...

  9. Hadoop 之Pig的安装的与配置之遇到的问题---待解决

    1. 前提是hadoop集群已经配置完成并且可以正常启动:以下是我的配置方案: 首先配置vim /etc/hosts 192.168.1.64 xuegod64 192.168.1.65 xuegod ...

  10. [书目20141009]《ReWork》

    ReWork1: ============= 引言篇INTRODUCTION开局篇FIRST 新的现实缷负篇TAKEDOWNS 忘了“现实世界” 哪来的从错误中学习 计划即瞎猜 何必壮大? 工作狂 受 ...