V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hoythan
V2EX  ›  程序员

使用 iframe 内嵌网站,如何防止被源网站发现?

  •  
  •   hoythan · 23 天前 · 2183 次点击
    a.com 内嵌一个 iframe ,指向到 b.com
    b.com 非常容易发现 a.com 内嵌并封杀。

    如何实现完美的内嵌,但是不被源网站发现?


    想法: a.com 内嵌一个 aa.comaa.com 内嵌 b.com 。 ( aa.com 域名一周换一个),但是担心 b.com 会直接发现 a.com
    17 条回复    2024-05-27 09:37:45 +08:00
    defunct9
        2
    defunct9  
       23 天前
    把内容动态取过来,不要内嵌
    hoythan
        3
    hoythan  
    OP
       23 天前
    @defunct9 b.com 中有一些 cdn 资源和静态文件资源,不太好直接取 HTML 源码然后显示出来,因为有的地址是

    ./xxx.jpg

    更改域名后无法找到正确的地址。
    LuckyLauncher
        4
    LuckyLauncher  
       23 天前
    反代并删除 reffer 相关 header
    Seanfuck
        5
    Seanfuck  
       23 天前
    用 service worker 修改 http 头
    defunct9
        6
    defunct9  
       23 天前
    哎,nginx 的 sub_filter ,改之
    my51paper
        7
    my51paper  
       23 天前
    那么问题来了,如何防止你这种流氓行为,如何 ban ?
    qhd1988
        8
    qhd1988  
       23 天前   ❤️ 1
    阻止不了,人家一个 window.top 就把你顶层的网页给发现了
    peasant
        9
    peasant  
       23 天前
    @my51paper 写一段 js 检测 window.top.location 里的信息,如果不是自己的域名就跳转或者上报域名,然后把这段 js 跟别的 js 混一起加密。
    cwliang
        10
    cwliang  
       23 天前
    内容安全策略可以设置被允许的域名内嵌,这种情况对方没有设置安全策略,如果发现了,你早就被 ban 了
    dfkjgklfdjg
        11
    dfkjgklfdjg  
       23 天前
    别人都发现了给你域名 ban 掉了,你还直接套 `iframe` 里面……
    过几天直接在头部配置 [X-Frame-Options]( https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/X-Frame-Options),不允许嵌入到 `frame` 你不就直接瞎了。
    所以用 Nginx 代理转发一层咯。但是如果对方就是不想让你嵌还是有办法的。
    不如直接点,花点时间把你需要用到的资源摘出来放到你自己的项目里面去用。
    gesse
        12
    gesse  
       23 天前
    无法避免,在不同域名的情况下,用户本地浏览器的 iframe 作用域里 js 的`window.top`的返回结果无法修改。

    除非你能修改每个用户的浏览器。
    CEBBCAT
        13
    CEBBCAT  
       23 天前
    > 这里绝对不会有任何教人如何钻空子的讨论
    @Livid ❤️
    luckyscript
        14
    luckyscript  
       23 天前
    直接用服务器反向代理 b.com ,然后再在 a.com 里面嵌入你的反向代理的服务域名/ip 。
    hoythan
        15
    hoythan  
    OP
       23 天前
    @dfkjgklfdjg 不会,已经和 B 沟通,去除了 X-Frame-Options 限制,但是域名商会 Ban 掉 整个账户。
    因为他们禁止域名用于纯 iframe 内嵌,认为我是诈骗,但是这家域名商价格最便宜,我又需要大量注册( 1000+),所以需要从其他域名商注册一个域名,代理 b.coma.com 访问, 核心目的是为了让这个域名商没法知道从他这里注册出去的 a.com 是用于 iframe 代理的。
    之前 ban 掉一个已经损失上万美刀了。


    @peasant
    核心需求是躲避类似 Google Console 这种的检查,因为我不确定 GANDI 的检查机制是什么。

    @LuckyLauncher
    @defunct9
    @Seanfuck

    我尝试代理,但是对方资源有的是 ./ 这种形式,到我的域名这里就无法访问了。
    ```nginx
    server {
    listen 80;
    server_name a.com;

    location / {
    proxy_pass https://b.com;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    }
    }

    ```
    defunct9
        16
    defunct9  
       23 天前   ❤️ 1
    location / {
    proxy_pass $scheme://mailer;
    proxy_set_header Host $host;
    # real-ip
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    # websocket
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_read_timeout 86400;
    ## replace content ##
    sub_filter_once off;
    sub_filter '撰写新邮件' '写信';
    sub_filter 'Dark mode' '深色';
    sub_filter 'Light mode' '浅色';
    sub_filter '[Administration]' '控制台';
    sub_filter '>Administration<' '>控制台<';
    sub_filter 'Trusted Senders' '可信发件人';
    sub_filter 'Collected Recipients' '收件人集合';
    sub_filter '</style>' '\n.pro,.brand,.nav-sidebar p.alert{display:none !important}\n</style>';
    }
    dfkjgklfdjg
        17
    dfkjgklfdjg  
       20 天前
    @hoythan #15 ,好奇怪的需求。`ifreame` 中用 `./` 请求的静态资源,最终还是用的 `b.com/static/xxx` 这样的形式去请求的资源,和你的代理没有关系的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   949 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:26 · PVG 03:26 · LAX 12:26 · JFK 15:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.