通过注入的JavaScript强制对火灾事件作出反应

通过注入的JavaScript强制对火灾事件作出反应,javascript,jquery,reactjs,Javascript,Jquery,Reactjs,我想做的事 var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text"); input_op.sendkeys("hello"); 我目前正在为Web Whatsapp编写一个小聊天机器人。由于易于js注入,我决定使用chrome扩展。有一个语音信息按钮,当您开始键入内容时,它会切换为发送文本的按钮。React删除语音消息元素并呈现send按钮 var input_op=jQuery("#

我想做的事

var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
input_op.sendkeys("hello");
我目前正在为Web Whatsapp编写一个小聊天机器人。由于易于js注入,我决定使用chrome扩展。有一个语音信息按钮,当您开始键入内容时,它会切换为发送文本的按钮。React删除语音消息元素并呈现send按钮

var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
input_op.sendkeys("hello");
问题

var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
input_op.sendkeys("hello");
整个过程是事件驱动的。我通过DOM设置文本,它不会触发react事件。我试图模拟按键,但出于安全原因,chrome的v8似乎禁用了所有模拟按键的方法。我还尝试过稍微操纵HTML,但在对元素进行更改后,react停止了工作。我也为此尝试了jQuery函数,但也没有成功

var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
input_op.sendkeys("hello");
对没有帮助的事情的引用:

var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
input_op.sendkeys("hello");

var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
input_op.sendkeys("hello");

var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
input_op.sendkeys("hello");
问题

var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
input_op.sendkeys("hello");

有没有办法迫使对方做出反应?或者任何一种解决方法?

Chrome不允许任何页面模拟按键,但您可以使用外部应用程序。Java是这类东西的最佳选择。从页面请求服务器请求Java应用程序为您按键。在Java中,chrome不会阻止robot类中的keypress。是一个显示机器人类在网页中键入文本的视频。如果您愿意,我可以帮助您使用Java()。

过去,当我需要尝试从Javascript允许的最高级别模拟按键时,我从brilliant中获得了灵感。他们让打字机小精灵打字的方式如下(摘自):

var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
input_op.sendkeys("hello");
它相当狡猾,过去对我来说已经突破了一些限制,你可以试试。

“解决方案”
var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
input_op.sendkeys("hello");

经过两天的研究,我不得不承认,出于安全原因,在我尝试的过程中,这显然是不可能的。如果你也像我一样遇到同样的情况,你不应该浪费时间来解决这个问题,而不仅仅是寻找一个好的解决办法。如果我弄明白了,我会在这里为WebWhatsapp机器人更新我的

var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
input_op.sendkeys("hello");
一,。 二,

var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
input_op.sendkeys("hello");
按以下顺序在chrome控制台中加载(粘贴到控制台中)此js脚本

var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
input_op.sendkeys("hello");
1.load jquery.js

var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
input_op.sendkeys("hello");
2.load billiterange.js

var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
input_op.sendkeys("hello");
3.load jquery.sendkeys.js

var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
input_op.sendkeys("hello");
现在,您可以将文本发送到Whatsapp输入框,如以下示例所示:

var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
input_op.sendkeys("hello");
要刺激发送按钮上的单击事件,请执行以下操作:

var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
input_op.sendkeys("hello");
function triggerMouseEvent(node, eventType) {

    var clickEvent = document.createEvent('MouseEvents');
    clickEvent.initEvent(eventType, true, true);
    node.dispatchEvent(clickEvent);
}

var d = document.querySelector("#main span[data-icon="send"]");
triggerMouseEvent(d, "click"); //stimulate mouse event in chrome

完成

在插入文本后立即尝试以下两件事:

var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
input_op.sendkeys("hello");
  • 围绕输入的文本创建一个范围,然后:
  • dispatchEvent(新事件('input',{bubbles:true,cancelable:false})

    var input_op=jQuery("#main div.pluggable-input-body.copyable-text.selectable-text");
    input_op.sendkeys("hello");
    
  • dispatchEvent(newmouseevent('mouseup',{bubbles:true,cancelable:true}))
    是的,您不能真正模拟按键,因为它不是DOM受信任事件(由用户发起)。我认为一个可能的途径是在系统中钩住蓝鸟的承诺并拦截呼叫——我不确定react是否允许你这么做。(当然,你也可以修改react本身——但我不确定我是否会这样做)。我想你已经尝试过类似
    TestUtils.Simulate.change
    的东西了,对吧?嘿,你使用哪个插件?你想过手动触发事件吗?没有,我自己写插件。机器人就是插件。这就是我的意思,我使用了Chrome扩展。在chrome扩展上注入JS非常容易,就像一个2分钟的工作。好吧,我可能会用错误的形式问你,你使用什么扩展?Java是邪恶的,imho。。我更喜欢用vbscript而不是java编写,但您的解决方案只是一种变通方法。不能“解决”问题本身。但是谢谢你的建议。我不认为任何浏览器会允许这样做!如果可能的话,所有的广告都会自动点击…:pI可以很容易地通过一个变通方法来实现,但如果你知道我的意思的话,那就没有纯javascript注入机器人那么干净和漂亮了。你可以在真正旧版本的IE或netscape navigator中进行测试。。。这可能不会过滤机器人的点击,但idk如果whatsapp有防机器人的保护是的,我想是的。模拟点击似乎在chrome中是不被允许的。嘿,你找到了这个问题的解决方案吗?嘿,伙计,我找到了答案,如果你感兴趣,让我知道我会发布答案here@SureshPattu你的解决方案是什么?在chrome中工作很好!!我现在只需要弄清楚如何将它注入我的webview;)