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

请教有无办法做到大陆正常加载网页上内嵌的 Tweets ~

  •  
  •   captainm · 2022-05-17 18:59:09 +08:00 · 2028 次点击
    这是一个创建于 921 天前的主题,其中的信息可能已经有所发展或是发生改变。

    源站在国外外,站点内嵌了一个Twitter Timeline,加载了 https://platform.twitter.com/widgets.js,这个 js 里面又有好几个域名用于加载 twitter 相关的资源。

    大陆用户访问站点会转圈圈。

    自己想过的方案:

    1. 反代widgets.js里面加载到的域名
    2. 修改widgets.js中的域名为反代之后的域名,然后把widgets.js放在反代服务器上
    3. 用其他域名和服务器做以上 1&2 的操作,不然源站估计分分钟被强 o.0
    4. 源站加载反代之后的widgets.js
    5. Nginx 限制源站才可以加载(聊胜于无)

    但首先不知道 Twitter 有没有啥限制,其次也不可能一直跟着 Twitter 的更新widgets.js~

    前端 Nuxt.js 后端 Java~

    求问下各位大哥有啥方案吗~

    14 条回复    2022-05-18 13:38:53 +08:00
    learningman
        1
    learningman  
       2022-05-17 21:13:48 +08:00
    写一个 wrapper 加载 widgets.js ,在这个 wrapper 里重载 fetch 和 xhr 。开一个 sni 反代服务器,限制 referer ,重载以后的 fetch 和 xhr 把请求指向这个反代服务器。
    当然 sni 也可以换成按路径加载,这个都是具体实现,大概是这么个思路
    ysc3839
        2
    ysc3839  
       2022-05-17 21:19:52 +08:00 via Android
    如果那个 js 不是在页面里塞一个 iframe 的话,也许可以用 Service Worker 拦截请求?
    terranboy
        3
    terranboy  
       2022-05-17 22:37:22 +08:00
    用 TWITTER 提供的 API 自己实现一个? 不要用他的 JS
    andj4cn
        4
    andj4cn  
       2022-05-18 09:20:55 +08:00
    借贴,请教一下大家,国内有没有在静态网页上嵌入推文的这种方案?

    我这边有个在静态页面嵌入 twitter 推文的想法,但是国内访问不到,所以想嵌入微博这种,自己发微博的时候静态页面上的相关位置自动更新新的微博内容。类似于这样 https://www.antlr.org/

    调研了下微博,发现微博早年支持这样,现在不支持内嵌了。。。

    请教大家有没有其他这样的成熟的方案?
    captainm
        5
    captainm  
    OP
       2022-05-18 09:46:29 +08:00
    @learningman 很好的思路!感谢!
    captainm
        6
    captainm  
    OP
       2022-05-18 09:53:52 +08:00
    @ysc3839 就是塞了一个 iframe o.0
    Service Worker 也是一个思路,但是似乎对性能有一点影响
    reorx
        7
    reorx  
       2022-05-18 10:22:24 +08:00 via iPhone
    我的网站在国外但是把推文静态化嵌入了,因此不再依赖页面上访问 twitter 的资源,示例可以看网站最近几篇文章的页尾 https://reorx.com/blog/reinitiate-rss-reader/

    实现上就是 @terranboy 的方案,在静态构建时通过推文 id 把数据获取下来生成 html
    ragnaroks
        8
    ragnaroks  
       2022-05-18 10:41:08 +08:00
    反代成本较高,自己实现比较好,按我的理解 CF 的云函数就够用
    captainm
        9
    captainm  
    OP
       2022-05-18 11:00:09 +08:00
    @reorx 推文的话是可以静态化,我是嵌了 Tweets Timeline ,动态加载的 o.0 ,目前 1 楼的思路似乎是一个可行的方案,找时间验证一下。
    captainm
        10
    captainm  
    OP
       2022-05-18 11:03:15 +08:00
    @ragnaroks 用云函数加载推文,然后静态化吗? 但我嵌入的是动态的 Tweets Timeline 欸,推特 js 里面又有好几个加载资源的域名,想了下似乎只有反代方案~
    ragnaroks
        11
    ragnaroks  
       2022-05-18 11:04:49 +08:00
    @captainm 我的意思是用 CF 去拉数据,输出结构化数据,CF 的作用是代理,你自己的站自己处理下结构化数据不就行了
    ragnaroks
        12
    ragnaroks  
       2022-05-18 11:05:33 +08:00
    @captainm 之所以我说用自己实现的原因就是如果用反代的话,你需要代理一堆域名,还需要至少一个服务器
    reorx
        13
    reorx  
       2022-05-18 11:11:21 +08:00 via iPhone
    CF workers 很好可惜国内现在访问也不行了
    captainm
        14
    captainm  
    OP
       2022-05-18 13:38:53 +08:00
    @reorx 是的 CF 到国内也很慢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1642 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 16:55 · PVG 00:55 · LAX 08:55 · JFK 11:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.