惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
SegmentFault 最新的问题
MongoDB | Blog
MongoDB | Blog
J
Java Code Geeks
Stack Overflow Blog
Stack Overflow Blog
The GitHub Blog
The GitHub Blog
博客园 - Franky
博客园 - 叶小钗
大猫的无限游戏
大猫的无限游戏
V
Visual Studio Blog
IT之家
IT之家
美团技术团队
博客园 - 司徒正美
Martin Fowler
Martin Fowler
Last Week in AI
Last Week in AI
酷 壳 – CoolShell
酷 壳 – CoolShell
Vercel News
Vercel News
雷峰网
雷峰网
B
Blog
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
D
Docker
P
Proofpoint News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
爱范儿
爱范儿

Fooleap's Blog

渴望理想 | Fooleap's Blog 19 年底一些事 | Fooleap's Blog 藉秋风,跑起来 | Fooleap's Blog 一个人去跑步 | Fooleap's Blog 8 月的跑量仿佛是那暑假的作业 | Fooleap's Blog 三伏天跑步那么难受,为何还要跑? | Fooleap's Blog 解决小程序开发“当前系统代理不是安全代理” | Fooleap's Blog 忘却配速的夏日跑步 | Fooleap's Blog 六月天时“带水”跑步更爽 | Fooleap's Blog 出来混迟早要还的 | Fooleap's Blog 跑步不能当饭吃 | Fooleap's Blog 将京东移动端详情页链接转为 PC 端 | Fooleap's Blog 不是热就是雨 | Fooleap's Blog 这半月,我跑了 11 个 520 | Fooleap's Blog 跑完流汗一时爽,一直流汗一直爽 | Fooleap's Blog 初夏夜跑 | Fooleap's Blog Electron 中打开 QQ 临时会话 | Fooleap's Blog 春节期间的培隆角 | Fooleap's Blog 从春天跑到夏天 | Fooleap's Blog 晨雾中奔跑 | Fooleap's Blog 漫步春雨中 | Fooleap's Blog 跑在木棉花下 | Fooleap's Blog 我在春节依然坚持跑步 | Fooleap's Blog 伴随着日出跑步 | Fooleap's Blog 没有最好,只有更好 | Fooleap's Blog 电子气温计 | Fooleap's Blog 渡亭小学的金凤花 | Fooleap's Blog 随心而跑 | Fooleap's Blog 2018 跑步小结 | Fooleap's Blog 在 gVim 中使用“非等宽字体” | Fooleap's Blog
科学使用 Disqus | Fooleap's Blog
fooleap · 2017-03-22 · via Fooleap's Blog

当初选择静态博客就是想更简单的备份博文,但静态博客的评论本身就是问题,还好有 Disqus,感觉还挺好。然而前段时间我却为博客评论操碎了心,因为 Disqus 被墙了。

在使用静态博客之前,我也是很犹豫,到底是使用什么来做评论框比较好?当时有想过用多说,好评如潮,功能相对齐全,但也看到不少人对它的评价也并不高,不是很稳定。最终,我还是选择老牌且逼格满满的 Disqus,因是社交评论框,当年也懂有被墙的隐患。

半年前,disqus.com 在国内大部,终于从“偶尔抽风”转向“完全被墙”,这样一来,本来访问量就不多的博客,访客想留言、写写评论都得翻墙?我想不应该是这样的,如此博客评论功能就相当于废了。

那么,是不是该考虑更换评论系统?我在许久之前就考虑过转向多说,还好最终因为某些问题没转多说,它已经通知即将下线[1]。找一套评论系统程序,数据存储等用自己的主机,新博客可以这么干,但想要保留原评论,这个工程估计不会小。更别说自造评论系统了,我估计还搞不定。

评论系统能不换我就不会换,Disqus 目前依然是最大的第三方评论系统,不容易翻船。

怎么不换是个问题,Disqus 被墙已是事实,自己可以翻墙访问,但并不能保证每个访客都能翻墙,怎么解决?之前看过反向代理实现无需翻墙访问 Google,对 Disqus 而言,也许只能是反向代理。

事实上,我对正向代理、反向代理这些概念并不熟悉,也不曾想去配置服务器实现反向代理 Disqus,想想就感觉很复杂。

之前为了在首页显示评论计数,我折腾过 Disqus API。现在由于 Disqus 已被墙,并没法在网页中直接通过 XMLHttpRequest 来发起请求。除却浏览器可以发起请求,cURL 也能发起请求。

我想起了一种方法,想要实现不翻墙即可访问 Disqus API,可以找一个服务器,客户端数据把发送到这个服务器,它接过手后顺便使用 cURL 发给 Disqus,根据 Disqus 返回的内容,服务器可直接返回给客户端,也可以将其简单处理一下再返回,感觉这也是反向代理。

cURL 需要程序支持,要使用 cURL,就需要另外一台 VPS 或者支持 cURL 的虚拟主机等。理论上,境内的网络大多无法直接访问 Disqus,虽说可以使用指定 IP,但访问 Disqus 速度明显没有境外主机快,所以这台主机必须最好在境外。

下面,用简单的流程图(不一定标准),将这个过程画出来。

在 Disqus 可以流畅访问的情况下,我们可以这么使用 Disqus API:

st=>start: 开始
e=>end: 结束
op1=>operation: 客户端请求(XHR)
io1=>inputoutput: Disqus 响应

st(right)->op1->io1(right)->e

如今 Disqus 被墙,因此我们可以这么搞:

st=>start: 开始
e=>end: 结束
op1=>operation: 客户端请求(XHR)
op2=>operation: 服务器请求(cURL)
io1=>inputoutput: Disqus 响应
io2=>inputoutput: 服务器响应

st(right)->op1->op2(right)->io1->io2(right)->e

有了 libcurl,后端程序也能够发送请求,为了方便后续使用,我选择了 PHP cURL[2](毕竟 PHP 的虚拟主机好找)。

到这里,我能想象得到使用 Disqus API 的优点不少,例如:

  • 不用翻墙即可使用
  • 样式可以完全自定义
  • 可实现 Disqus 评论框没有的功能
  • ……

优点那么多,想想都口水直流,但具体怎么实现才是大问题。

提供评论的浏览及发表这两个功能,可以说是博客评论最为基础的。为了丰富文章列表页的显示,我还在首页放了相关文章评论数的显示。

我查看了 Disqus 的 API 文档[3],以上所述功能都找到了对应的 API 接口。

  • 评论计数 threads/list
  • 评论浏览 threads/listPosts, posts/list
  • 评论发表 posts/create

至此,想要实现不翻墙使用 Disqus,研究的内容至少如下:

  • Disqus API 核心,其他围着它转
  • PHP 主要是 PHP cURL 的使用
  • HTML/CSS/JS 需要自己写一个评论框

相比较复制几行代码即可实现加载 Disqus 评论框,任不重,但道似乎还很远。

参考资料

本文历史

  • 2017 年 03 月 22 日 完成初稿

最近更新

猜你喜欢