源站在国外外,站点内嵌了一个Twitter Timeline
,加载了 https://platform.twitter.com/widgets.js
,这个 js 里面又有好几个域名用于加载 twitter 相关的资源。
大陆用户访问站点会转圈圈。
自己想过的方案:
widgets.js
里面加载到的域名widgets.js
中的域名为反代之后的域名,然后把widgets.js
放在反代服务器上widgets.js
但首先不知道 Twitter 有没有啥限制,其次也不可能一直跟着 Twitter 的更新widgets.js
~
前端 Nuxt.js 后端 Java~
求问下各位大哥有啥方案吗~
1
learningman 2022-05-17 21:13:48 +08:00
写一个 wrapper 加载 widgets.js ,在这个 wrapper 里重载 fetch 和 xhr 。开一个 sni 反代服务器,限制 referer ,重载以后的 fetch 和 xhr 把请求指向这个反代服务器。
当然 sni 也可以换成按路径加载,这个都是具体实现,大概是这么个思路 |
2
ysc3839 2022-05-17 21:19:52 +08:00 via Android
如果那个 js 不是在页面里塞一个 iframe 的话,也许可以用 Service Worker 拦截请求?
|
3
terranboy 2022-05-17 22:37:22 +08:00
用 TWITTER 提供的 API 自己实现一个? 不要用他的 JS
|
4
andj4cn 2022-05-18 09:20:55 +08:00
借贴,请教一下大家,国内有没有在静态网页上嵌入推文的这种方案?
我这边有个在静态页面嵌入 twitter 推文的想法,但是国内访问不到,所以想嵌入微博这种,自己发微博的时候静态页面上的相关位置自动更新新的微博内容。类似于这样 https://www.antlr.org/ 调研了下微博,发现微博早年支持这样,现在不支持内嵌了。。。 请教大家有没有其他这样的成熟的方案? |
5
captainm OP @learningman 很好的思路!感谢!
|
6
captainm OP @ysc3839 就是塞了一个 iframe o.0
Service Worker 也是一个思路,但是似乎对性能有一点影响 |
7
reorx 2022-05-18 10:22:24 +08:00 via iPhone
我的网站在国外但是把推文静态化嵌入了,因此不再依赖页面上访问 twitter 的资源,示例可以看网站最近几篇文章的页尾 https://reorx.com/blog/reinitiate-rss-reader/
实现上就是 @terranboy 的方案,在静态构建时通过推文 id 把数据获取下来生成 html |
8
ragnaroks 2022-05-18 10:41:08 +08:00
反代成本较高,自己实现比较好,按我的理解 CF 的云函数就够用
|
9
captainm OP @reorx 推文的话是可以静态化,我是嵌了 Tweets Timeline ,动态加载的 o.0 ,目前 1 楼的思路似乎是一个可行的方案,找时间验证一下。
|
10
captainm OP @ragnaroks 用云函数加载推文,然后静态化吗? 但我嵌入的是动态的 Tweets Timeline 欸,推特 js 里面又有好几个加载资源的域名,想了下似乎只有反代方案~
|
11
ragnaroks 2022-05-18 11:04:49 +08:00
@captainm 我的意思是用 CF 去拉数据,输出结构化数据,CF 的作用是代理,你自己的站自己处理下结构化数据不就行了
|
13
reorx 2022-05-18 11:11:21 +08:00 via iPhone
CF workers 很好可惜国内现在访问也不行了
|