gpt4 book ai didi

python - 取消缩短 Flic.kr 网址

转载 作者:行者123 更新时间:2023-11-28 16:34:22 24 4
gpt4 key购买 nike

我有一个 Python 脚本,它根据发布的答案取消缩短 URL here .到目前为止,它运行良好,例如,youtu.begoo.glt.cobit.lytinyurl.com。但现在我注意到它不适用于 Flickr 自己的 URL 缩短器 flic.kr。

例如,当我输入网址时

https://flic.kr/p/qf3mGd

进入浏览器,我被正确重定向到

https://www.flickr.com/photos/106783633@N02/15911453212/

但是,当使用 Python 脚本取消缩短相同的 URL 时,我得到以下重定向

https://flic.kr/p/qf3mgd
http://www.flickr.com/photo.gne?short=qf3mgd
http://www.flickr.com/signin/?acf=%2Fphoto.gne%3Fshort%3Dqf3mgd
https://login.yahoo.com/config/login?.src=flickrsignin&.pc=8190&.scrumb=[...]

因此最终出现在雅虎登录页面上。 Unshort.me顺便说一句,可以正确地缩短 URL。我在这里缺少什么?

这是我的脚本的完整源代码。我用原始脚本偶然发现了一些病态案例:

import urlparse
import httplib


def unshorten_url(url, max_tries=10):
return __unshorten_url(url, [], max_tries)

def __unshorten_url(url, check_urls, max_tries):
if max_tries == 0:
if len(check_urls) > 0:
return check_urls[0]
return url
if url in check_urls:
return url
unshortended = ''
try:
parsed = urlparse.urlparse(url)
h = httplib.HTTPConnection(parsed.netloc)
h.request('HEAD', url)
except:
return None
try:
response = h.getresponse()
except:
return url


if response.status/100 == 3 and response.getheader('Location'):
unshortended = response.getheader('Location')
else:
return url
#print max_tries, unshortended
if unshortended != url:
if 'http' not in unshortended:
return url
check_urls.append(url)
return __unshorten_url(unshortended, check_urls, (max_tries-1))
else:
return unshortended

print unshorten_url('http://t.co/5skmePb7gp')

编辑:带有 t.co URL 的完整工作示例

最佳答案

我以这种方式使用 Request [0] 而不是 httplib,它与 https://flic.kr/p/qf3mGd 一起工作得很好喜欢网址:

>>> import requests
>>> requests.head("https://flic.kr/p/qf3mGd", allow_redirects=True, verify=False).url
u'https://www.flickr.com/photos/106783633@N02/15911453212/'

[0] http://docs.python-requests.org/en/latest/

关于python - 取消缩短 Flic.kr 网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28425869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com