js 能不能获取 iframe 框架的 html 源码?

2018-10-24 16:46:59 +08:00
 PHPer233
我在 A 网页的页面上用 js 创建一个 iframe,这个 iframe.src 等于 B 网页的某个页面。我想在 iframe 加载完成后在 A 页面上用 js 获取 iframe 的 html 内容。这个功能弄了半天没搞出来,特来请教一下。
5698 次点击
所在节点    JavaScript
20 条回复
xiaoxinshiwo
2018-10-24 17:27:51 +08:00
iframe.contentWindow, 获取 iframe 的 window 对象
iframe.contentDocument, 获取 iframe 的 document 对象
不能吗?
shyangs
2018-10-24 17:33:40 +08:00
As 1F.
BTW, 有沒跨域.
Seanfuck
2018-10-24 17:39:54 +08:00
跨域的话肯定不行
duan602728596
2018-10-24 17:57:44 +08:00
不要忘了,获取要在 iframe 的 load 事件内执行
PHPer233
2018-10-24 17:59:01 +08:00
@Seanfuck A 和 B 是两个不同的域名。这应该是跨域了吧?真的没办法操作吗?
yoshiyuki
2018-10-24 18:01:36 +08:00
可以让后端帮你拿呀
shintendo
2018-10-24 18:03:29 +08:00
跨域不能的吧
不然你在自己网页上放个隐藏 iframe,指向 X 站,然后用户又有 X 站的登录状态,那你不就拿到他的 X 站页面上的内容了
djs
2018-10-24 18:40:40 +08:00
后台抓呗
097ecom
2018-10-24 18:43:14 +08:00
如果 iframe 里面的 URL 和你网站的网址为同一个,那就可以,否则不行,跨域了
agdhole
2018-10-24 18:47:05 +08:00
跨域会拦截
zhzer
2018-10-24 19:01:11 +08:00
不能,别说 iframe,本窗口中的 js 能拿到手的文本都是浏览器处理完的
Foxkeh
2018-10-24 19:04:22 +08:00
请百度 iframe 父子兄弟调用
t6attack
2018-10-24 19:13:03 +08:00
你实在要想实现的话,把这个扩展装上,开关打开,就可以了。
https://chrome.google.com/webstore/detail/nlfbmbojpeacfghkpbjhddihlkkiljbi
loginv2
2018-10-24 19:14:25 +08:00
你拿不到,但是它可以主动给你
t6attack
2018-10-24 19:27:13 +08:00
这个问题,正好可以解释下浏览器跨域限制的逻辑。其实不难理解。

如果按你说的这个方法,这样可以的话。那么你访问一个网站,网站方就可以随意构建 0 像素 iframe,指向任意网站,并把代码传回服务端。这就相当于把你变成代理了。只要你停留在页面上,网站方就可以以 你的 IP 身份 上网、爬取信息、甚至黑客行为。。那样互联网不就乱套了么?
SoloCompany
2018-10-24 19:39:41 +08:00
如果你可以控制 iframe 的内容,那么可以使用 sendmessage 跨域传递消息
PHPer233
2018-10-24 19:43:53 +08:00
@t6attack 有道理
cdwyd
2018-10-24 19:55:43 +08:00
其实是可以拿到的,用的是安卓部分早期浏览器的一个漏洞,亲测可以拿到别人网站的源代码。
具体代码现在估计找不到了,不过搂着可以按这个方向搜索下资料
OctopusGO
2018-10-24 19:58:14 +08:00
可以,我以前遇到过这个问题,我明天上班了把以前的代码给你
PHPer233
2018-10-25 00:13:04 +08:00
@OctopusGO 真的吗?谢谢啦

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/500719

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX