【问题标题】:press a button on external site with javascript使用 javascript 在外部网站上按下按钮
【发布时间】:2014-01-13 18:10:22
【问题描述】:

有没有办法使用 javascript 和/或 jquery 在外部网站上按下按钮?就像我这样打开一个新窗口:

windowObjectReference = window.open("http://some_site.html","name"); 

然后我想在这个网站上按下一个按钮。像这样的:

windowObjectReference.button.click();

或者:

name.button.click();

【问题讨论】:

    标签: javascript jquery window.open


    【解决方案1】:

    如果浏览器允许您通过放置在您自己网站上的脚本执行此操作,那将是一个巨大的安全漏洞。

    所以,不,这是不可能的,也不应该是不可能的

    但是……

    如果两个网站都属于您(您可以访问他们的代码),您可以传递一个参数(例如,作为 URL 中的哈希),然后目标网站可能会读取它并触发您提到的事件 (name.button.click())。

    【讨论】:

    • 如果第二个站点属于您,您首先不会这样做,window.open 会给您另一个窗口对象。 developer.mozilla.org/en/DOM:window.open 所以不需要搞乱哈希。
    • @greut:如果两个站点都属于您并且它们具有不同的域,那么您真的仍然可以访问窗口的内容吗?问题是关于external site,我理解为域外的东西。
    • 我知道我可以使用 window.open() 访问同一个域,但问题是关于不同域的。所以谢谢你的哈希建议,我会试试看的。
    • @user1142908:我很高兴它有帮助:)
    • @Tadeck 确实,它没有考虑到他们两个在不同的域上。
    【解决方案2】:

    您无法使用网页中的 JavaScript 执行此操作。 不过,您可以通过浏览器扩展来完成。

    【讨论】:

    • 谢谢,您有什么特别的浏览器和扩展程序吗?我想是火狐。
    • 几乎任何浏览器。我在 Chrome 中使用“空白画布脚本处理程序”,Opera 支持开箱即用的用户脚本,Firefox 需要一个名为 GreaseMonkey 的插件。
    • 这是我正在寻找的解决方案。非常感谢。
    【解决方案3】:

    不!

    出于安全原因。这种攻击称为clickjacking!它被用于Twitter

    【讨论】:

    • 我没有意识到,从来没有听说过点击劫持,虽然名字听起来很有趣:)
    【解决方案4】:

    有没有办法使用 javascript 在外部网站上按下按钮 和/或 jquery?

    我知道我在聚会上迟到了,但是是的,不幸的是,这是一种非常简单的方法。

    1. 在您的页面上创建一个 div(例如#externalDiv);
    2. 将 CSS 属性设置为隐藏并显示为无;
    3. 使用(简单方式)jQuery方法.load()或使用XMLHttpRequest()制作自己的JS方法;
    4. 在您的页面上加载外部页面;
    5. 点击你想要的按钮

      $('#externalDiv').load('http://www.externalPage.com', function(){$('#externalPageButtonId').click();});

    如果你不知道它是如何工作的,就不能被它所困扰:)

    【讨论】:

    • 只有 externalpage.com 支持 CORS 并允许您的网站加载它才能工作
    • 确实如此。 CORS 在 2014 年 1 月被 W3C 接受。但是如果你查看我的回答日期,你会发现那是 2014 年 1 月 :)。那时,浏览器还没有完全实现访问控制请求和访问控制响应。例如,今天可以使用 Selenium 在外部触发 click 事件,或者通过解析 href 并 curl 它的...
    • 当 jQuery 出现时,CORS 可用于所有浏览器。 Chrome3、fx3.5、saf4、ie8
    • CORS 自 2010 年左右就已经全面普及
    【解决方案5】:

    由于 SOP,您不得这样做。任何trick to force user to perform click on your behalf 都将被视为点击劫持攻击,可能导致不良后果。

    【讨论】:

      猜你喜欢
      • 2016-12-06
      • 2015-09-19
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多