惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

K
Kaspersky official blog
T
Threat Research - Cisco Blogs
N
News and Events Feed by Topic
Hacker News: Ask HN
Hacker News: Ask HN
Project Zero
Project Zero
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - 叶小钗
Security Latest
Security Latest
Spread Privacy
Spread Privacy
aimingoo的专栏
aimingoo的专栏
N
News and Events Feed by Topic
Webroot Blog
Webroot Blog
U
Unit 42
Cyberwarzone
Cyberwarzone
小众软件
小众软件
Scott Helme
Scott Helme
Engineering at Meta
Engineering at Meta
Microsoft Security Blog
Microsoft Security Blog
T
The Blog of Author Tim Ferriss
A
About on SuperTechFans
爱范儿
爱范儿
S
Schneier on Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Schneier on Security
Schneier on Security
Latest news
Latest news
GbyAI
GbyAI
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
The Register - Security
The Register - Security
WordPress大学
WordPress大学
博客园_首页
Blog — PlanetScale
Blog — PlanetScale
PCI Perspectives
PCI Perspectives
Jina AI
Jina AI
AI
AI
NISL@THU
NISL@THU
I
Intezer
G
GRAHAM CLULEY
B
Blog
S
Secure Thoughts
IT之家
IT之家
宝玉的分享
宝玉的分享
Recent Announcements
Recent Announcements
Y
Y Combinator Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
有赞技术团队
有赞技术团队
V2EX - 技术
V2EX - 技术
Recorded Future
Recorded Future
Hacker News - Newest:
Hacker News - Newest: "LLM"

月光博客

AI编程从零开始:环境配置到开发调试-月光博客 母亲被保健品诈骗-月光博客 向身体低头,向岁月妥协:我的高血压“还债日记” -月光博客 月光博客电子书:《信息安全指南》 谷歌发布2025年度搜索排行榜 中国2025社会热点大事记 2025年十大流行语发布 7天3次,骗子骗走我母亲95万元 “技术男”设三重安全墙,母亲95万存款还是被骗走了 电信诈骗后的复盘:母亲的95万元,是怎么从手机银行里消失的 母亲被电信诈骗95万元的全过程 阿根廷警察被谷歌街景相机拍到裸照 网信办开展“清朗·整治恶意挑动负面情绪问题”专项行动 翟欣欣敲诈勒索案一审获刑12年 《绝命毒师》影评:力工觉醒后的梭哈至死 《人工智能生成合成内容标识办法》正式施行 用AI分析你的财务信息 腾讯子公司实习HR怒怼求职者后被开除 OpenAI发布最强模型GPT-5,免费向所有用户开放 用AI解构你的日记 用AI分析你的游戏偏好 用AI分析你的观影偏好 用AI分析你的听歌偏好 《白鹿原》人物分析:乱世浮沉中的人性剖析 乌托邦的捷径:让AI治理“失败国家” 苹果AI的“路径错误”:为什么它在大模型时代掉队了? 《暗黑破坏神3》第35赛季开荒指南 我对特朗普的看法 欧·亨利十大经典小说鉴赏 HBO电视剧《最后生还者》第二季影评 播客自动化更新分发教程 《围城》人物分析:知识分子的时代困局 NotebookLM音频概览支持中文 《暗黑破坏神3》国服回归 《暗黑破坏神3》国服赛季开荒指南 《网络数据安全管理条例》正式发布实施 契约之下的自由:社会契约论 如何去除文章的AI味道 电影《好东西》影评 我的价值观:义务论和效益论 《魔兽世界》正式服PVP教程 电影《哪吒2》影评 中医理论不是科学理论 DeepSeek与主流AI模型对比评测 TikTok停止在美国服务 我的三观(世界观、价值观、人生观) 《无限暖暖》游戏评测 2024年财经年度总结 月光博客2024年推荐阅读文章 IMDb公布2024年热门电影和电视剧 2024年十大流行语发布 谷歌发布2024年度搜索排行榜 中国2024社会热点大事记 Google Adsense税务居住地证明申请教程 极狐GitLab回应前员工实名举报公司高管:恶意诽谤造谣 升级FTTR千兆光纤带宽 字节跳动起诉前实习生索赔800万 看完历届奥斯卡最佳影片后的体验 李子柒已经正式改名并恢复更新 苹果历年新春短片 “姜萍事件”调查结果公布 胡锡进社交平台恢复更新 上海女子沙白自杀的伦理道德分析 京东与杨笠一起玩火 字节跳动大模型训练被实习生攻击,涉事者已被辞退 《加勒比海盗》系列电影 《夺宝奇兵》系列电影时间线 《侏罗纪公园》系列电影时间线 《终结者》系列电影时间线 华为禁止用户从外部手动安装安卓应用(APK文件) 《炉石传说》国服回归一片混乱 官媒辟谣苹果手机被远程引爆 小米回应摄像头里出现陌生男子说话 环球人物:民族大义不是流量密码,盲目排外没有土壤 《异形》系列电影时间线 看完IMDb250后的体验 暴雪《炉石传说》国服开启预约 网易DD参与代打《魔兽世界》事件的深入分析 福建男子四年前“翻墙”浏览境外网站被行政处罚 《魔兽世界》正式服开服两周游戏体验 暴雪游戏足迹查询:查看暴雪游戏的数据 用AI分析你的推特社交网络数据 胡锡进停更三个月 国家网络身份认证公共服务管理办法向社会公开征求意见 苹果将部分产能转回中国 Windows全球大范围蓝屏 电影《V字仇杀队》影评 微软中国员工禁用安卓手机:只能用iPhone 《魔兽世界》怀旧服“巫妖王之怒”游戏体验 百度旗下萝卜快跑已在多个城市开放载人测试 我为什么不喜欢华为这家企业 胡锡进:强烈谴责苏州袭击日本人的凶手 20美元在美国超市的购买力 华为紧急辟谣“是国内最大的牛肉进口商” 苹果公司公布2024年Apple设计大奖获奖名单 自动生成电影剧本:人工智能技术的崭新里程碑 电影《芳华》人物分析 Steam账号被盗号的解决方法 中文互联网内容正在逐步消失 马斯克:推特域名已全部转移到X
获得来自搜索引擎的关键字
投稿 · 2010-04-02 · via 月光博客

一般情况下通过关键词进入的页面都是用户想要的内容,对于某些搜索搜录与关键词相关度不是很高的页面(例如列表页),我们需要根据用户搜索的关键词对用户进行引导,从而提高用户的体验,也可以提高网页的PV。

本文的原理是通过获取来源页面,分析来源URL的结构,提取出关键字,这些都是比较简单的东西。本文阐述重点是如何区分出几种常见的URL编码方式,然后进行相应的解码。因为应用是在ASP中进行,因此本文若有代码相关的例子,均是在ASP下调试通过的。其他语言下思想相同,且实现相对简单些。

提取各个搜索引擎的关键字

现在的各大搜索引擎全是基于GET请求方式的,即在URL后面带有一串参数。例如:我搜索“秋寒博客”

谷歌:http://www.google.cn/search?sourceid=navclient&hl=zh-CN&ie=UTF-8&rlz=1T4GGLL_zh-CN___CN352&q=%e7%a7%8b%e5%af%92%e5%8d%9a%e5%ae%a2

百度:http://www.baidu.com/s?wd=%C7%EF%BA%AE%B2%A9%BF%CD

必应:http://cn.bing.com/search?q=%E7%A7%8B%E5%AF%92%E5%8D%9A%E5%AE%A2&form=QBLH&filt=all

谷歌和Google的 q=%e7%a7%8b%e5%af%92%e5%8d%9a%e5%ae%a2 ,百度的 wd=%C7%EF%BA%AE%B2%A9%BF%CD ,必应的 q=%E7%A7%8B%E5%AF%92%E5%8D%9A%E5%AE%A2 中带下划线部分就是关键词。 其他搜索引擎也大致相同,通过URL就可以看出关键词的字段是哪个,然后可以通过正则将关键词提出。

提取主流搜索关键词的正则如下:

(?:yahoo.+?[\?|&]p=|openfind.+?query=|google.+?q=|lycos.+?query=|onseek.+?keyword=|search\.tom.+?word=|search\.qq\.com.+?word=|zhongsou\.com.+?word=|search\.msn\.com.+?q=|yisou\.com.+?p=|sina.+?word=|sina.+?query=|sina.+?_searchkey=|sohu.+?word=|sohu.+?key_word=|sohu.+?query=|163.+?q=|baidu.+?wd=|baidu.+?kw=|baidu.+?word=|3721\.com.+?p=|Alltheweb.+?q=|soso.+?w=|115.+?q=|youdao.+?q=|sogou.+?query=|bing.+?q=|114.+?kw=)([^&]*)

以上正则是我根据网上的正则有所修改,让其支持soso、115、youdao、sogou、bing(必应)、114(或118114)这些搜索,感谢作者提供。因为网上转载太多,尚未注明原出处,因此我也无法标明原作者。

编码类型的识别

GB2312和UTF-8

从上面的例子我们可以看出,同样是搜索“秋寒博客”,但是不同的搜索对URL编码后,形成的字符串也不同。谷歌和必应下面是“%e7%a7%8b%e5%af%92%e5%8d%9a%e5%ae%a2”,而在百度却是“%C7%EF%BA%AE%B2%A9%BF%CD”。相信对网页编码了解的朋友都应该了解这是怎么回事,不同的页面编码(charset)对相同的字符进行编码后,产生的编码也是不同的。UTF-8默认产生的是UTF-8的编码,默认解码也是UTF-8。GB2312等也一样的。谷歌和必应用的是UTF-8编码,而百度用的是GB2312编码,就造成了相同的关键词在不同的搜索下产生了不同的字符串。

对于UTF-8和GB2312的解码都可以实现,但是如果不知道目标是什么编码方式,就不知道如何去解码了。如上面的两个字符串,初给你看,看不来是用何种编码方式。当然第一反应是通过搜索来判断编码方式,这种方法确实可行也有效。但是看看上面的正则,如果用这种方法,那么一个 if 后面要跟很多的 or 才行。网上一般用的也是这样的方法,我觉得这个不是最好的方法。我们得知的信息有:1、%xx%xx格式都是URL编码(UTF-8或GB2312);2、GB2312中汉字要两组%xx组成一个汉字,UTF-8要三组%xx组成一个汉字;3、如果用UTF-8解码方式去解GB2312的编码就会出现乱码。

单从长度和编码的范围我们根本无法辨别编码方式,只能通过其他方式来判断。根据上面3点,我们可以做一个假设:如果用UTF-8解码方式来解GB2312的编码会出现什么情况?因为UTF-8是有三组%xx组成的,而GB2312是由两组%XX组成的,如果用UTF-8的解码方式去解GB2312且能解码成功,那解码后的字符的长度一定会变短。例如:GB2312URL编码的“秋寒博客”(%C7%EF%BA%AE%B2%A9%BF%CD)用UTF-8解码,若能解码成功,解码后的字符长度会是2个半汉字。如果不能解码成功,不用说就是GB2312编码方式了。

OK,至此我们初步已经知道如何去识别URL的编码类型了,步骤如下:

1、获取关键字编码串;

2、取得编码串的组数(x),例如:“%C7%EF%BA%AE%B2%A9%BF%CD 为8组;

3、用UTF-8解码方式去解取得的编码串;

4、如果解码失败(即程序出错)跳到第 8 步;

5、如果解码成功,取得解码后的字符串长度(y),与全面的编码串的组数除以3比较;

6、如果 x!=y 那么跳转到第 8 步;

7、如果 x=y 那么得到的字符串即为关键字;

8、用GB2312方式解码,得到的字符串为关键字;

上面步骤中,有几点需要注意:

1、第1步中需要将非汉字的URL转义及英文去掉;

2、第2、3、5步中的编码串为上面提到的字符串;

3、第7、8步中解码需要对原字符串进行;

UNICODE

在测试的过程中,发现soguo从网页跳到图片去的时候,会将URL编码方式改为UNICODE。UNICODE的方式相对比较好区分,即判断是否为\uxxxx或%uxxxx的形式即可。这个相对简单,只分享在ASP中的解码函数。

以下代码来自CSDN论坛:

方法一:

response.Write vbsUnEscape("\u5c0f\u867e\u7c73")

Function vbsUnEscape(str)'解密

dim i,s,c

s=""

For i=1 to Len(str)

c=Mid(str,i,1)

If Mid(str,i,2)="\u" and i<=Len(str)-5 Then

If IsNumeric("&H" & Mid(str,i+2,4)) Then

s = s & CHRW(CInt("&H" & Mid(str,i+2,4)))

i = i+5

Else

s = s & c

End If

ElseIf c="%" and i<=Len(str)-2 Then

If IsNumeric("&H" & Mid(str,i+1,2)) Then

s = s & CHRW(CInt("&H" & Mid(str,i+1,2)))

i = i+2

Else

s = s & c

End If

Else

s = s & c

End If

Next

vbsUnEscape = s

End Function

方法二:

s = "\u5c0f\u867e\u7c73"

s = Replace(s, "\u", "%u")

Response.Write Unescape(s)

在C#中也没有发现能识别URL编码格式的函数或方法,不知在PHP和JAVA下有没有更好的方法呢?欢迎大家讨论。

来源:读者沈力投稿,原文地址

获得来自搜索引擎的关键字