在 Python 中,我使用 urllib2 打开一个 url。此 url 重定向到另一个 url,该 url 重定向到另一个 url。
我希望在每次重定向后打印出 url。
例如
-> = 重定向到
A -> B -> C -> D
我想打印B、C、D的URL(A是已知的,因为它是起始URL)。
只需询问当前网址即可轻松获得D。
req = urllib2.Request(starturl, datagen, headers)
res = urllib2.urlopen(req)
finalurl = res.geturl()
要处理中间重定向,您可能需要构建自己的开启器,使用记录重定向的HTTPRedirectHandler。
urllib
的解决方案要简单得多:
import urllib
def resolve(url):
return urllib.request.urlopen(url).geturl()
这个GitHub Repository提供Python、JavaScript和PHP代码来获取另一个URL重定向到的URL。
Python代码:
import requests
import urllib.parse
def get_final_url(url):
response = requests.get(url)
redirects = [url]
for resp in response.history:
redirects.append(resp.headers['Location'])
return (response.url, redirects)
initial_url = 'https://www.example.com/redirect';
url_final, all_redirects = get_final_url(initial_url);
print("Final URL: " + url_final)
print("All redirects: " + " -> ".join(all_redirects))
链接到JavaScript代码和PHP代码来实现这个。