需求:
获取用户来源(用户从搜索引擎通过什么关键词进到本网站的)
一、获取来源网址: document.referrer
以“简书”为例,下同。
在搜索引擎搜索“简书”,点击目标链接,在目标链接控制台中输入document.referrer
,即可获取来源网址
二、相关搜索渠道
1. 百度
1.1 百度pc端
-
百度搜索引擎搜索时,百度搜索页面的url中,wd后面是关键词
-
点击百度搜索到的网页后,官方把wd后面的关键字隐藏,需要通过eqid调用官方接口,获取到关键词
- 官方接口网址,收费为0.001一次
1.2 百度移动端
-
百度移动端搜索时,页面的url中,word后面是关键词
-
pc端切换成移动端这种情况,页面的url,也是word后面是关键词
- 点击百度搜索到的目标页面后,控制台打印来源网址,也是发现官方把wd关键字隐藏了,需要通过eqid调用官方接口,获取关键词
1.3 百度搜索引擎总结
- 不同点:
- pc端: wd后为关键词
- 移动端:word后为关键词
- 共同点
- 进入目标页面后,来源网址中的关键词都是wd,都是通过eqid,需要调用官方接口,获取关键词
2. 搜狗
2.1 搜狗pc端
-
搜狗pc端搜索时,页面的url中,query后面是关键词
-
进入到目标页面后,查看来源网址,发现没有可以截取的关键词
- 之前2020.7月的时候,有测试过的,来源网址中是放在query后面的,可直接获取的
2.2 搜狗移动端
- 搜狗移动端搜索时,页面的url中,发现有两个字段是跟关键词有关的
htprequery
和keyword
htprequery:上一个搜索的关键词
keyword:当前搜索的关键词
-
在目标页面中,查看来源网址,发现是可以通过keyword来获取的关键词
- 获取来源网址中 关键词的代码
function getQueryString(name,url) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = url.match(reg);
if (r != null) {
return decodeURI(r[2]);
} else {
return null;
}
}
var queryUrl = document.referrer
if(queryUrl.split('/')[2] == "m.sogou.com"){
var keyword = getQueryString("keyword",queryUrl.split('?')[1])
}
- 注意:在搜狗搜索页面第一次搜索,页面url中是不包含关键词的字段的,搜索两次及以上,才会出现两个字段跟关键词有关的
htprequery
和keyword
2.3 搜狗搜索引擎总结
- pc端: query后为关键词,来源网址中不包含关键词
- 移动端:keyword后为关键词,来源网址通过keyword获取关键词
3. 360搜索
3.1 360搜索pc端
-
360搜索pc端搜索时,页面的url中,q后面是关键词
-
进入目标网址后,查看来源网站,发现只有m这个字段,无可操作空间
- 之前2020.7月的时候,有测试过的,来源网址中是放在q后面的,可直接获取的
3.2 360搜索移动端
-
360搜索移动端搜索时,页面的url中,q后面是关键词
-
进入目标网址后,查看来源网址,q后为关键词
3.3 360搜索引擎总结
- pc端: q后为关键词,来源网址中不包含关键词
- 移动端:q后为关键词,来源网址通过q获取关键词
4. 神马搜索引擎(只有移动端)
-
搜索时,页面的url中,q后面是关键词
-
进入目标网址后,查看来源网址,q后面是关键词
5. 谷歌
- 问题:无法通过document.referrer来获取任何关键词
- 解决方法:(花钱)
- 通过Awords关联GA