如果最终网址是https,如何使用python取消缩短(解析)网址?

时间:2015-04-03 02:24:02

标签: python python-2.7 url-shortener

我希望在最终的网址为https时,在python中取消(解析)网址。我已经看到了这样的问题:How can I un-shorten a URL using python? (以及其他类似的),但正如对已接受答案的评论中所述,此解决方案仅在网址未重定向到https时才有效。

作为参考,该问题中的代码(在重定向到http url时工作正常)是:

# This is for Py2k.  For Py3k, use http.client and urllib.parse instead, and
# use // instead of / for the division
import httplib
import urlparse

def unshorten_url(url):
    parsed = urlparse.urlparse(url)
    h = httplib.HTTPConnection(parsed.netloc)
    resource = parsed.path
    if parsed.query != "":
        resource += "?" + parsed.query
    h.request('HEAD', resource )
    response = h.getresponse()
    if response.status/100 == 3 and response.getheader('Location'):
        return unshorten_url(response.getheader('Location')) # changed to     process chains of short urls
    else:
        return url

(注意 - 出于明显的带宽原因,我希望通过只询问文件标题来实现[就像上面的http-only版本]而不是通过询问整个页面的内容)< / p>

1 个答案:

答案 0 :(得分:10)

如果urlHTTPSConnection,您可以从parsed.scheme获取该计划,然后使用https
您也可以使用请求库来完成此操作。

>>> import requests
>>> r = requests.head('http://bit.ly/IFHzvO', allow_redirects=True)
>>> print(r.url)
https://www.google.com