为什么Chrome可以在其他网页上执行javascript,但我无法做到?

时间:2016-07-06 18:17:42

标签: javascript jquery ajax google-chrome

道歉,如果这是一个问这个问题的迂回方式,但我对网络和JavaScript如何工作有点困惑。

我想做什么:在我找到的网址列表的所有网页上执行javascript。 (具体使用jquery从中提取信息)

问题我无法在这些网页上执行Javascript,因为它们不是我的,并且没有Access-Control-Allow-Origin标头。所以我无法加载它们(使用AJAX)以便在它们上使用JQuery。

但是 Google Chrome可以加载页面并在其上执行javascript(使用他们的开发人员的控制台)。所以如果我也想要,我可以去每个页面,打开开发人员控制台,然后从那里获取信息。如果没有什么能阻止Chrome访问这些内容,那为什么我会停止?而且,有没有办法解决这个问题?

谢谢,我希望我的描述有意义。我已经研究了一段时间,但没有找到解释CORS看似不一致的内容。

2 个答案:

答案 0 :(得分:2)

  

我可以转到每个页面,打开开发人员控制台,然后从那里获取信息。如果没有什么能阻止Chrome访问这些内容,那我为什么要停止?

你没有停止过。通过将每个页面作为顶级页面访问,您,键盘上的人,可以完全按照您的说法完成。

停止了 - 幸运的是 - 您正好在网上运行的所有脚本具有与您相同的可见度。根据您的cookie和网络拓扑,您可以在Web上获得独特的视图。您可以看到家庭路由器的控制界面(192.168.1.1或类似)。您可以在127.0.0.1上看到您正在运行的任何本地网络服务器。没有人能看到这些。如果没有相同来源的策略,那么您在Web上加载的任何脚本都可以检查这些。

  

并且,有没有办法解决这个问题?

如果您有一些您完全信任的脚本(希望是#34; Web上存在的所有脚本"),您希望能够绕过相同的脚本-origin策略并查看您对Web的完整跨域视图,您可以load them as an extension,它可以使用超出普通网页功能的提升权限。 (见How does Same Origin Policy apply to browser extensions?

答案 1 :(得分:0)

我将假设您希望从这些不属于您的页面中获取数据并将其存储在某处。我之前用curl做过这个。如果您希望显示这些网站以供用户以不同的方式进行交互,但从您的页面开始,您可以通过使用curl抓取源html并将其呈现为一种代理来呈现这些页面。

我已将本教程用于类似https://www.youtube.com/watch?v=_kQN-3aNCeI的内容。希望这会给你一个开始。我认为你应该在你的问题中更详细一点,但要获得更多帮助。