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

2022-05-17 18:59:09 +08:00
 captainm

源站在国外外,站点内嵌了一个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~

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

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

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

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

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

实现上就是 @terranboy 的方案,在静态构建时通过推文 id 把数据获取下来生成 html
ragnaroks
2022-05-18 10:41:08 +08:00
反代成本较高,自己实现比较好,按我的理解 CF 的云函数就够用
captainm
2022-05-18 11:00:09 +08:00
@reorx 推文的话是可以静态化,我是嵌了 Tweets Timeline ,动态加载的 o.0 ,目前 1 楼的思路似乎是一个可行的方案,找时间验证一下。
captainm
2022-05-18 11:03:15 +08:00
@ragnaroks 用云函数加载推文,然后静态化吗? 但我嵌入的是动态的 Tweets Timeline 欸,推特 js 里面又有好几个加载资源的域名,想了下似乎只有反代方案~
ragnaroks
2022-05-18 11:04:49 +08:00
@captainm 我的意思是用 CF 去拉数据,输出结构化数据,CF 的作用是代理,你自己的站自己处理下结构化数据不就行了
ragnaroks
2022-05-18 11:05:33 +08:00
@captainm 之所以我说用自己实现的原因就是如果用反代的话,你需要代理一堆域名,还需要至少一个服务器
reorx
2022-05-18 11:11:21 +08:00
CF workers 很好可惜国内现在访问也不行了
captainm
2022-05-18 13:38:53 +08:00
@reorx 是的 CF 到国内也很慢

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

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

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

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

© 2021 V2EX