我正在分析url钓鱼数据,有些url可能有几个重定向(301302(。
我可以使用curl
:获得最终目的地和重定向次数
curl -Ls -o /dev/null -w "%{num_redirects},%{url_effective}" <url>
用pythonrequests
:做同样的事情
import requests
r = requests.get(url, allow_redirects=True)
if r.history:
print(f'{len(r.history)},{r.history[-1].url}')
我发现使用requests
history
并不能给我最终的目的地(尽管下载的内容与curl
相同(。
例如,给定url(我发誓这是一个合法的url(https://ludik.xyz/music
,这就是我用curl
:得到的
1,https://ludik.herokuapp.com/#/
这就是我在python中得到的:
1,https://ludik.xyz/music
在python中进行所有重定向后,我如何才能获得最终目的地?
最终url设置在响应对象上:
In [5]: import requests
...:
...: r = requests.get("https://ludik.xyz/music")
In [8]: r.url
Out[8]: 'https://ludik.herokuapp.com/#/'