js 能不能获取 iframe 框架的 html 源码? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
PHPer233
V2EX    Javascript

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

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

    如果按你说的这个方法,这样可以的话。那么你访问一个网站,网站方就可以随意构建 0 像素 iframe,指向任意网站,并把代码传回服务端。这就相当于把你变成代理了。只要你停留在页面上,网站方就可以以 你的 IP 身份 上网、爬取信息、甚至黑客行为。。那样互联网不就乱套了么?
    SoloCompany
        16
    SoloCompany  
       2018-10-24 19:39:41 +08:00 via iPhone
    如果你可以控制 iframe 的内容,那么可以使用 sendmessage 跨域传递消息
    PHPer233
        17
    PHPer233  
    OP
       2018-10-24 19:43:53 +08:00 via iPhone
    @t6attack 有道理
    cdwyd
        18
    cdwyd  
       2018-10-24 19:55:43 +08:00
    其实是可以拿到的,用的是安卓部分早期浏览器的一个漏洞,亲测可以拿到别人网站的源代码。
    具体代码现在估计找不到了,不过搂着可以按这个方向搜索下资料
    OctopusGO
        19
    OctopusGO  
       2018-10-24 19:58:14 +08:00 via Android
    可以,我以前遇到过这个问题,我明天上班了把以前的代码给你
    PHPer233
        20
    PHPer233  
    OP
       2018-10-25 00:13:04 +08:00 via iPhone
    @OctopusGO 真的吗?谢谢啦
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2589 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 05:09 PVG 13:09 LAX 22:09 JFK 01:09
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86