去年我们公司的手机站使用了 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 了 🤯。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.