使用 Nginx 反向代理百度爬虫支持 Github Pages 收录

2018-06-22 10:55:19 +08:00
 songxin

使用 Nginx 反向代理百度爬虫支持 Github Pages 收录

最近在学习 Nginx,想到既然 Nginx 可以做反向代理,为嘛不能直接代理百度爬虫,
去向 github pages 请求,然后将结果返回给百度爬虫,这样就能直接让百度收录 github pages 了。
百度爬取 github 给 403 的主要判断依据是 user agent,可以在 Nginx 中直接对 user agent 进行伪造。

试了一下,的确可以。
Nginx 具体配置如下:

server{
         listen 80;
         server_name 3gods.com; #替换成自己的域名
         location / {
             proxy_pass         https://songxin1990.github.io; #替换成自己的 github pages 主页
             proxy_redirect     off;
             proxy_set_header   User-Agent "Mozilla/5.0";
             proxy_set_header   Host                        $host;
             proxy_set_header   X-Real-IP                $remote_addr;
             proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
          }
}

但是这种收录方式必须要有台 vps 并装上 Nginx,所以自己写了个小程序, 主要就是接受 form 表单提交的要绑定域名和 github pages 的访问地址,然后后台生成一个 nginx.conf, 再 service nginx reload 一下就可以了。 具体的可以看这篇文章: Github Pages 百度索引收录工具

程序很粗糙,不过大概会有哪些问题,自己都有考虑到,先看看又没人用吧,没人用的东西就没价值,后续也就没有继续优化改造的必要了。
欢迎大家讨论,吐槽。

6520 次点击
所在节点    分享创造
34 条回复
est
2018-06-22 11:04:31 +08:00
意义何在?
songxin
2018-06-22 11:15:40 +08:00
@est 意义就是为了让百度收录,你不用在部署到 coding.net ,也不用在 vps 上搞个镜像站点,每次都要更新。而是直接让百度爬虫去 github pages 上抓取。
torbrowserbridge
2018-06-22 11:29:25 +08:00
意义何在
LongLights
2018-06-22 11:32:18 +08:00
感觉挺有意义的啊。。。这样一个人有一台 vps 就能帮一堆人的 GitHubPage 实现百度正常抓去了。。。
zacksleo
2018-06-22 11:48:17 +08:00
目前不抓吗
kera0a
2018-06-22 11:53:15 +08:00
这样百度抓取的结果 URL 应该是 3gods.com ?(用你的示例),然后抓完了还得把 DNS 解析 改回 github pages 吧?
不然 VPS 得一直开着,正常用户也得走代理
smilingsun
2018-06-22 11:59:25 +08:00
Tink
2018-06-22 11:59:40 +08:00
这和反带源站有何区别?
BFDZ
2018-06-22 12:00:14 +08:00
绑定自定义域名,百度就会收录,个人实测

www.bfdz.ink

bfdz.github.io
songxin
2018-06-22 12:02:38 +08:00
可能是我没交代清楚,问题是:百度无法收录 github pages,因为 github 对百度爬虫的访问直接给 403。
之前的解决方法是:1.使用 coding 做镜像; 2.使用 vps 部署镜像站点,用 Nginx 反向代理避免一个 80 端口被占用;
3.使用 CDN。
这些方法都有些缺陷,coding.net 很恶心必须要主页贴 logo,vps 部署镜像要保证同步的问题还要搞各种依赖环境,CDN 没搞过不好说。

这个方式就是只需要 Nginx 就可以了,伪造 user agent 让百度爬虫自己去抓,这样玩的人多了可能后续 github 会有一些反制措施,因为百度爬虫这东西非常不友好,不遵循 robots,每天爬取频次过高等。
songxin
2018-06-22 12:05:20 +08:00
@kera0a 这里域名肯定改成你自己的啊,DNS 里面肯定要加百度的线路解析,指向到 VPS 的外网 ip 就行了。
songxin
2018-06-22 12:05:56 +08:00
@BFDZ 真的假的?你百度直接抓 bfdz.github.io 没返回 403 ?
MonoLogueChi
2018-06-22 12:06:03 +08:00
@kera0a 楼主的意思应该是,把你的域名百度解析到他的 VPS,然后反代去抓,这样抓到的页面是你的域名,而正常用户则会直接被解析到你的网站
kera0a
2018-06-22 12:10:10 +08:00
@songxin
@MonoLogueChi
我只是用一下楼主的例子。 不太清楚怎么做到 百度爬虫 解析到 VPS 的 IP,正常用户解析到 github pages。
DNSPod 有这种功能么?
songxin
2018-06-22 12:14:52 +08:00
@MonoLogueChi 是的,我这个东西只是帮大家的 github pages 能够让百度抓取,其他的没任何影响。
DNS 里面要加一条线路类型为百度的 A 记录,地址填我的 VPS 的 ip。
当然,我的 VPS 挂了,被攻击了,这也会有风险,因为对百度爬虫来说,站点更换 ip 对 SEO 有非常大影响,就看有没人信任,想用,仅此而已。

我只是提供一种解决 github pages 被百度收录的方法,顺带提供一个小工具。
自有 VPS 和 Nginx 的可以自己这么干,就不用这个了。
songxin
2018-06-22 12:15:55 +08:00
@kera0a 去学习了解下 DNS 和 Nginx 吧,我之前也搞很久。
kera0a
2018-06-22 12:19:31 +08:00
@songxin 看了一下,确实是 DNSPod 的功能,我用的 cloudflare,没这种功能,这种方法是不能用了 - -
ihancheng
2018-06-22 12:35:38 +08:00
@BFDZ 实测不行哦,绑定自定义域名百度工具是抓取不到的。会有 403 错误,IP 显示为 xxx.github.io 的 IP

抓取异常信息: 拒绝访问

返回 HTTP 头:
HTTP/1.1 403 Forbidden
Cache-Control: no-cache
Content-Type: text/html
yuluofanchen
2018-06-22 15:07:05 +08:00
整那么多干啥子。

直接 xxx.github.io ,每天百度抓取一次,多次提交。发多点外链,1 个月内收录。10 个域名都是这样子的。
songxin
2018-06-22 17:39:51 +08:00
@yuluofanchen 收录不了。。。不信试试

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

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

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

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

© 2021 V2EX