2

我想调用一个 onclick 函数,因为我正在为 MikroTik RouterBoard 编写脚本,以便通过直接访问一个简单的链接来重新启动我的调制解调器,但我发现调制解调器正在重新启动的页面有一个按钮,它调用一个onlick 函数为:

<input type="button" onclick="btnReset()" value="Reboot">

那么有什么方法可以直接在 http url 中调用这个 onclick 函数,例如:

http://admin:hunter@192.168.1.1/resetrouter.html?btnReset()=Reboot

这是我正在编写的 MikroTik 脚本,但它无法完成这项工作..它需要一个直接链接,它只访问并下载文件..!

如果有任何 MikroTik 脚本编写人员可以提供帮助,那将是非常棒的......直到那时,如果有任何方法可以在直接 url 中做到这一点,那就太好了..!

 {
/tool fetch url="http://admin:hunter@192.168.1.1/resetrouter.html?btnReset()=Reboot" mode=http 
}
4

3 回答 3

2

从超链接执行 js 代码是不可能的(除非页面内部有脚本,特别是为此并且它正在检查某些参数......)。

但是,有一些工具可以帮助您以其他方式执行所需的操作:

  • 安装Custom JS for Web Sites 插件并定义 js 脚本,该脚本将在您的http://admin:hunter...页面加载到浏览器中后执行。

    对于您的情况,这将是简单的函数调用:

    btnReset()
    
  • 分析btnReset() function(可能该函数发送 http 请求)的主体并使用cURL构造相同的请求,请参阅cURL 教程

  • 看一下Bookmarklet,它是存储在包含 JavaScript 命令的 Web 浏览器中的书签。

  • 熟悉PhantomJSSelenium并编写简单的脚本来执行所需的操作。

于 2016-02-14T11:54:27.363 回答
1

btnReset() 函数可能只是一个对话框,后面跟着一个 URL 获取。打开 javascript 控制台,输入btnReset.toString()并查看。如果您在其中看到一个 URL,请尝试直接访问该 URL。

于 2016-02-14T11:45:54.130 回答
1

您需要一个非常具体的 URL“ http://admin:hunter@192.168.1.1/rebootinfo.cgi ”。在我的例子中,函数 btnReset() 调用“rebo​​otinfo.cgi”。我按照以下步骤找到“rebo​​otinfo.cgi”。

  1. 打开路由器的“保存/重启”页面或等效页面。

  2. 检查“重新启动”按钮,即右键单击特定按钮并从菜单中单击“检查”。

  3. 在右侧打开的开发人员工具中,注意突出显示行中的 onclick 属性的功能。例如,在我的情况下,来自“input type="button" onclick="btnReset()" value="Reboot" 行的 btnReset()。

  4. 转到开发人员工具上的控制台选项卡并粘贴不带括号的函数名称,例如 btnReset(不是 btnReset() ),然后按 Enter。

  5. 在 btnReset() 的函数定义中,查找负责重新启动路由器的确切命令。就我而言,它是“rebo​​otinfo.cgi”。

  6. 就是这样,构造URL。

于 2017-07-14T10:41:39.943 回答