尝试检测过期的短网址,status_code 和响应网址出现问题

问题描述 投票:0回答:1

我正在检查在客户端内容中找到的短网址。到目前为止,我使用了一个简单的 requests.get(url),然后处理响应 url 和状态代码。到目前为止,这给了我足够的信息。

现在,我遇到了内容中过期的短网址。当我在浏览器中手动打开短网址时,我得到

https://short.ly/?ref=expired&url=https://short.ly/abcdef

解析响应 URL 中的参数将使编码变得非常简单,但我使用 requests 库得到的结果看起来并不像那样。相反,它返回相同的 url 和状态代码 200,这与任何正常页面相同。

有没有办法通过 requests 库获取浏览器中的 url,还是必须使用像 Selenium 这样的库?在我的整个过程中,使用 Selenium 在这一点上似乎有点矫枉过正。

python python-requests
1个回答
0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.