最近在学习 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 百度索引收录工具。
程序很粗糙,不过大概会有哪些问题,自己都有考虑到,先看看又没人用吧,没人用的东西就没价值,后续也就没有继续优化改造的必要了。
欢迎大家讨论,吐槽。
![]() | 1 est 2018-06-22 11:04:31 +08:00 意义何在? |
2 songxin OP @est 意义就是为了让百度收录,你不用在部署到 coding.net ,也不用在 vps 上搞个镜像站点,每次都要更新。而是直接让百度爬虫去 github pages 上抓取。 |
![]() | 3 torbrowserbridge 2018-06-22 11:29:25 +08:00 via Android 意义何在 |
![]() | 4 LongLights 2018-06-22 11:32:18 +08:00 感觉挺有意义的啊。。。这样一个人有一台 vps 就能帮一堆人的 GitHubPage 实现百度正常抓去了。。。 |
![]() | 5 zacksleo 2018-06-22 11:48:17 +08:00 via iPhone 目前不抓吗 |
![]() | 6 kera0a 2018-06-22 11:53:15 +08:00 这样百度抓取的结果 URL 应该是 3gods.com ?(用你的示例),然后抓完了还得把 DNS 解析 改回 github pages 吧? 不然 VPS 得一直开着,正常用户也得走代理 |
![]() | 7 smilingsun 2018-06-22 11:59:25 +08:00 |
![]() | 8 Tink PRO 这和反带源站有何区别? |
![]() | 9 BFDZ 2018-06-22 12:00:14 +08:00 |
10 songxin OP ![]() 可能是我没交代清楚,问题是:百度无法收录 github pages,因为 github 对百度爬虫的访问直接给 403。 之前的解决方法是:1.使用 coding 做镜像; 2.使用 vps 部署镜像站点,用 Nginx 反向代理避免一个 80 端口被占用; 3.使用 CDN。 这些方法都有些缺陷,coding.net 很恶心必须要主页贴 logo,vps 部署镜像要保证同步的问题还要搞各种依赖环境,CDN 没搞过不好说。 这个方式就是只需要 Nginx 就可以了,伪造 user agent 让百度爬虫自己去抓,这样玩的人多了可能后续 github 会有一些反制措施,因为百度爬虫这东西非常不友好,不遵循 robots,每天爬取频次过高等。 |
11 songxin OP @kera0a 这里域名肯定改成你自己的啊,DNS 里面肯定要加百度的线路解析,指向到 VPS 的外网 ip 就行了。 |
12 songxin OP @BFDZ 真的假的?你百度直接抓 bfdz.github.io 没返回 403 ? |
13 MonoLogueChi 2018-06-22 12:06:03 +08:00 via Android @kera0a 楼主的意思应该是,把你的域名百度解析到他的 VPS,然后反代去抓,这样抓到的页面是你的域名,而正常用户则会直接被解析到你的网站 |
![]() | 14 kera0a 2018-06-22 12:10:10 +08:00 |
15 songxin OP @MonoLogueChi 是的,我这个东西只是帮大家的 github pages 能够让百度抓取,其他的没任何影响。 DNS 里面要加一条线路类型为百度的 A 记录,地址填我的 VPS 的 ip。 当然,我的 VPS 挂了,被攻击了,这也会有风险,因为对百度爬虫来说,站点更换 ip 对 SEO 有非常大影响,就看有没人信任,想用,仅此而已。 我只是提供一种解决 github pages 被百度收录的方法,顺带提供一个小工具。 自有 VPS 和 Nginx 的可以自己这么干,就不用这个了。 |
![]() | 17 kera0a 2018-06-22 12:19:31 +08:00 @songxin 看了一下,确实是 DNSPod 的功能,我用的 cloudflare,没这种功能,这种方法是不能用了 - - |
18 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 |
![]() | 19 yuluofanchen 2018-06-22 15:07:05 +08:00 |
20 songxin OP @yuluofanchen 收录不了。。。不信试试 |
![]() | 21 yuluofanchen 2018-06-22 18:18:54 +08:00 @songxin 已经试过了。去年测试 10 个,收录 10 个。 |
![]() | 22 wql 2018-06-22 19:08:25 +08:00 via Android 百度之前的幺蛾子事情,应该是 github 屏蔽百度。 |
![]() | 23 swkl86 2018-06-23 07:18:22 +08:00 via Android 都用上 vps 了想不通为什么还要用 pages ? 意义在于收录?你确定?用 pages 的人大部分都只是当一个记事本。 真想做收录的肯定上 wp 了,意义何在? 就为了 md 和 git?我只能说,你们真的好有空,加油! |
25 songxin OP @swkl86 我建议你先看看我前面的回复。还有,为什么用了 VPS 就不应该用 pages ?有是更好的替代品吗? 至少我觉得用 github 的 pages 或者 issues 来写点博客,记点东西是很方便的。 |
![]() | 26 Dawnki 2018-06-23 15:29:11 +08:00 via iPhone 之前用 hexo 写博客就遇到这个收录问题,找朋友的 vps 试试看 |
27 songxin OP @Dawnki 嗯,可以试试,不行就直接用我这个,至少目前不出大问题,我的 vps 不会换,linode 的 froment 机房,180ms 左右。 |
28 ihancheng 2018-06-23 19:00:22 +08:00 via Android 按照你的方法添加了解析,用了空闲的 vps 做了设置。。还是抓去不成功心累 |
![]() | 30 msg7086 2018-06-24 04:55:21 +08:00 Google Pages 就是个静态网站托管。 你都有 VPS 了,除非是硬盘容量不够,要不然服务器开个定时任务从 Git 上 Pull 下来启动就好了嘛。 |
![]() | 31 msg7086 2018-06-24 04:55:51 +08:00 ↑ 打错了 GitHub Pages。 PS: 我自己用的 GitLab Pages,也挺好用的。 |