去年我们公司的手机站使用了 Angular 做的 SPA,SEO 说不行,搜索引擎不爬 JS 的,这样做百度🕷️抓不到数据,今年我们重写了老的 SPA 手机站,改为了 PHP 输出 HTML 来渲染页面,前几天上线后发现我们每天的 25k Google Maps 使用量会在大约两个小时的时间内消耗殆尽,但是从 GA 那里拿到的数据上看我们的 PV 是没有这么高的。
几番查证发现是百度🕷️在抓取我们的 Google Maps API,我们的 Google Maps API 是直接写在 HTML 的底部的:
<script src="http://maps.google.cn/maps/api/js?v=3.32®ion=cn&language=zh-CN&key=KEY" type="text/javascript"></script>
和 SEO 讨论后把 HTML 的 script 转移到了 JS 里面,按照之前百度🕷️不执行 JS 的认知觉得这样就可以解决这个问题了:
const key = 'KEY';
const googleMaps = `http://maps.google.cn/maps/api/js?v=3.32®ion=cn&language=zh-CN&key=${key}`;
$.getScript(googleMaps).done(() => {
//...
});
部署到线上后发现 Google Maps API 的使用量还是居高不下,难道百度🕷️已经开始执行 JS 了吗?我在 Google Developer Console 里面看不到 API 请求细节,只好在 JS 下面又加了一段代码:
$.getScript('/will_baidu_spider_crawl_me');
部署到线上后在 access.log 里面发现了大量百度🕷️发起的 /will_baidu_spider_crawl_me
的请求
```10.1.21.42 - - [24/May/2018:11:55:12 +0800] "GET /will_baidu_spider_crawl_me?_=1527134112074 HTTP/1.0" 404 21 "http://m.juwai.com/property/36375240" "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)" "111.206.198.36, 223.202.197.10"```
百度果然已经开始执行 JS 了 🤯。
1
input2output 2018-05-24 12:10:34 +08:00
Google 似乎也会执行, 我博客上的邮箱地址要用 JS 解密, 但是 Google 呈现出明文了
|
2
congeec 2018-05-24 12:12:21 +08:00 via iPhone
key 实在要放前端也要混淆拼接一下嘛
PHP 白写了.... |
3
morethansean 2018-05-24 12:16:54 +08:00 1
既然如此前端渲染的 SPA 他为什么不能抓取……
|
4
chinvo 2018-05-24 12:18:09 +08:00
Baiduspider-render/2.0
看来是更新了,大概是用了无头浏览器 |
5
oszlso 2018-05-24 12:19:16 +08:00 via Android
把这个 js 放到单独的目录 再在 robots 里面限制一下目录 不知道这样还会不会抓取(我没实验过)
|
6
just1 2018-05-24 12:19:24 +08:00 via Android
so 为什么不判断 ua
|
7
kookpua 2018-05-24 12:20:28 +08:00 via iPhone
只引用 js 也计算数量?
|
8
Tonni OP |
9
Tonni OP |
11
m939594960 2018-05-24 13:10:22 +08:00
https://ziyuan.baidu.com/wiki/990 好像确实渲染 js 了
|
12
UnPace 2018-05-24 16:25:06 +08:00
robots 禁止抓取可以解决吧
|
13
Tonni OP @UnPace 暂时没有,robots.txt 已更新,百度还在疯狂请求 `/google-maps-api`,地图请求又被耗尽了,明天观察变化。
|
15
Tonni OP 百度没有遵守 robots.txt 协议,早上依然在疯狂的爬我们的 API,已经用 UA 判断来屏蔽了。
|
16
DT27 2018-05-25 16:32:08 +08:00
百度就算抓也不应该这么短时间上前次的疯狂抓啊。。。
会不会是谁特意伪造 ua 来攻击? |