
去年我们公司的手机站使用了 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.1"``` 百度果然已经开始执行 JS 了 。
1 input2output 2018 年 5 月 24 日 Google 似乎也会执行, 我博客上的邮箱地址要用 JS 解密, 但是 Google 呈现出明文了 |
2 congeec 2018 年 5 月 24 日 via iPhone key 实在要放前端也要混淆拼接一下嘛 PHP 白写了.... |
3 morethansean 2018 年 5 月 24 日 既然如此前端渲染的 SPA 他为什么不能抓取…… |
4 chinvo 2018 年 5 月 24 日 Baiduspider-render/2.0 看来是更新了,大概是用了无头浏览器 |
5 oszlso 2018 年 5 月 24 日 via Android 把这个 js 放到单独的目录 再在 robots 里面限制一下目录 不知道这样还会不会抓取(我没实验过) |
6 just1 2018 年 5 月 24 日 via Android so 为什么不判断 ua |
7 kookpua 2018 年 5 月 24 日 via iPhone 只引用 js 也计算数量? |
8 Tonni OP |
9 Tonni OP |
11 m939594960 2018 年 5 月 24 日 https://ziyuan.baidu.com/wiki/990 好像确实渲染 js 了 |
12 UnPace 2018 年 5 月 24 日 robots 禁止抓取可以解决吧 |
13 Tonni OP @UnPace 暂时没有,robots.txt 已更新,百度还在疯狂请求 `/google-maps-api`,地图请求又被耗尽了,明天观察变化。 |
15 Tonni OP 百度没有遵守 robots.txt 协议,早上依然在疯狂的爬我们的 API,已经用 UA 判断来屏蔽了。 |
16 naver1 2018 年 5 月 25 日 百度就算抓也不应该这么短时间上前次的疯狂抓啊。。。 会不会是谁特意伪造 ua 来攻击? |