最近在学习 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 2018-06-22 11:59:40 +08:00 via iPhone
这和反带源站有何区别?
|
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,也挺好用的。 |