我正在检查在客户端内容中找到的短网址。到目前为止,我使用了一个简单的 requests.get(url),然后处理响应 url 和状态代码。到目前为止,这给了我足够的信息。
现在,我遇到了内容中过期的短网址。当我在浏览器中手动打开短网址时,我得到
https://short.ly/?ref=expired&url=https://short.ly/abcdef
解析响应 URL 中的参数将使编码变得非常简单,但我使用 requests 库得到的结果看起来并不像那样。相反,它返回相同的 url 和状态代码 200,这与任何正常页面相同。
有没有办法通过 requests 库获取浏览器中的 url,还是必须使用像 Selenium 这样的库?在我的整个过程中,使用 Selenium 在这一点上似乎有点矫枉过正。
Jeyekomon 指出 如果短链接存在,则 t.ly 返回状态代码 302,然后将您重定向到长链接,长链接将返回新的状态代码。
如果未找到链接,您将获得状态代码 200,并通过多个重定向,您将到达 t.ly 的主站点 问题是请求会自动处理重定向,所以
r=requests.get('https://t.ly/4WEYb')
print(r.status_code)
将返回长链接的状态代码(https://www.google.com/search?q=foo)
但是你无法通过设置来阻止它
allow_redirects=False
def isLinkExsists(url):
r=requests.get(url,allow_redirects=False)
if r.status_code==302:
return True
elif r.status_code==200:
return False
else:
#Handle t.ly server errors
return False