问题 我们可以将javascript插入到浏览器中加载的任何网页中


我正在寻找将javascript注入浏览器中加载的任何网页的方法,以便我可以遍历页面的DOM。我使用JQUERY来满足我的脚本需求。 方法应该适用于所有浏览器。

我试过用 IFRAME 并添加一些HTML,但我不能。请提出一些建议。


11529
2018-03-31 07:15


起源

你的意思是你有一个网页和一个iframe,当你在iframe中加载一个页面时,你想要遍历它中的DOM吗? - Kronass
看一眼 en.wikipedia.org/wiki/Cross-site_scripting - rahul


答案:


尝试使用Greasemonkey: http://www.greasespot.net/。您可以使用它在页面加载时为您想要的任何网站执行自定义脚本。你可以在这里找到一些基本的教程: http://wiki.greasespot.net/Tutorials


12
2018-03-31 07:27



我正在寻找要做的事情,谢谢。我倾向于使用Safari但发现了 Greasekit 允许运行一些Greasemonkey脚本的插件。 - iain


您无法在无法控制其内容的任意网页上运行Javascript。这将是一个 巨大 安全漏洞如果不是这样的话。

想想看:你可以运行Javascript并等待某人登录他们的网上银行,然后用字符输入做一些事情。


3
2018-03-31 07:17



只是为了澄清这一点:您在网页中提供的Javascript无法在其他域的其他网页上运行(请参阅问题评论中的XSS链接)。但是,根据您自己的本地需求,您可以在浏览器加载的任何页面上运行javascript,可以通过浏览器的javascript控制台或其他工具(如Greasemonkey)运行。 - Andrew Shooner
你确定。因为我已经通过chrome运行脚本到亚马逊来获得闪购的产品并成功获得它。 - It's a trap
@AndrewShooner请看这个 blog.sriraman.in/...。我的朋友使用这个脚本来获取这款手机,我可以确认他是否成功获得了这款手机。亚马逊在那里注入了sccript,这不是一个小网站。 - It's a trap
是的,这是我试图澄清的一点:你可以在你的浏览器加载的DOM上运行你想要的任何javascript(使用javascript控制台或其他方法),但是你的浏览器的单一来源政策禁止从不同的下载执行javascript域比加载它的页面,除非您使用JSONP或CORS等方法。 - Andrew Shooner
@AndrewShooner但这可能导致DOS攻击,这就是为什么我不同意答案 - It's a trap


我建议创建一个包含两个iframe的页面,一个导航到指定的网站,另一个用于获取DOM对象。 在第一个导航到网站,然后选择其HTML和  将其附加到第二个iframe的主体中。

iframe2.contentWindow.document.body.innerHTML = iframe1.contentWindow.document.body.innerHTML

然后使用您的自定义函数遍历第二个Iframe内的DOM对象


2
2018-03-31 07:41





你可以创建一个书签(见 http://en.wikipedia.org/wiki/Bookmarklet)反过来可以向页面添加一个节点,src指向你自己的javascript所在的位置。在脚本节点上添加它将运行。 你可以找到更多细节 http://www.johnvey.com/features/deliciousdirector/ 在“它是如何工作的?”之下。这样,您可以在书签栏中添加书签,点击该书签时,会将您的脚本添加到您碰巧所在的任何页面。


1
2018-03-31 14:07





我正在使用Chrome TamperMonkey 为特定的网页添加自定义脚本也很棒,我真的可以推荐它。


0
2018-02-02 07:55





看一眼 jquery JSON 和 维基百科的JSON页面

或者你可以简单地添加一个 <script> 标记到文档:

$("head").append('<script src="..." type="text/javascript"></script>');

这将加载javascript文件。


-2
2018-03-31 07:17