需求:实现提取谷歌搜索跳转URL中原始干净URL的函数
提取谷歌搜索重定向中的原始干净URL函数实现
嘿,这个需求我太熟悉了!谷歌搜索结果里的跳转链接,本质就是把目标原始URL做了URL编码后,塞进了url这个查询参数里。咱们要做的就是把这个参数提取出来,再解码就能得到浏览器最终显示的干净URL了。
核心思路
- 解析谷歌重定向URL的查询参数部分
- 找到其中的
url参数值(这是经过URL编码的原始地址) - 对该值进行URL解码,得到最终的干净URL
Python实现示例
from urllib.parse import urlparse, parse_qs, unquote def extract_clean_google_url(dirty_url): # 解析输入的脏URL结构 parsed = urlparse(dirty_url) # 解析所有查询参数,parse_qs会将参数转为字典(值是列表) query_params = parse_qs(parsed.query) # 取出url参数的第一个值(因为可能存在重复参数,取第一个即可) encoded_target = query_params.get('url', [None])[0] if not encoded_target: raise ValueError("这不是有效的谷歌重定向链接,找不到`url`参数哦") # URL解码得到原始干净URL return unquote(encoded_target)
测试验证
用你给出的示例URL测试一下:
test_url = "https://www.google.co.il/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwiiz-Xp4srYAhXOxqQKHTZeAPQQFggnMAA&url=https%3A%2F%2Fwww.usatoday.com%2F&usg=AOvVaw04_mIwjwWapfFyzAJqqpNW" print(extract_clean_google_url(test_url)) # 输出结果:https://www.usatoday.com/
JavaScript实现示例
如果是前端场景,也可以用浏览器原生的URL对象来实现:
function extractCleanGoogleUrl(dirtyUrl) { const urlObj = new URL(dirtyUrl); const encodedTarget = urlObj.searchParams.get('url'); if (!encodedTarget) { throw new Error("无效的谷歌重定向链接,未找到`url`参数"); } return decodeURIComponent(encodedTarget); }
注意事项
- 要处理异常情况:如果输入的URL不是谷歌的重定向链接(没有
url参数),要抛出明确的错误提示 - URL解码要使用对应语言的标准库方法,避免自己手动解码出现编码问题
内容的提问来源于stack exchange,提问作者Nadav
相关产品推荐
相关产品推荐

