首页 > 解决方案 > python如何在重定向后获得最终目的地

问题描述

我正在分析 url 网络钓鱼数据,一些 url 可能有多个重定向(301、302)。

我可以使用以下方法获取最终目的地和重定向次数curl

curl -Ls -o /dev/null -w "%{num_redirects},%{url_effective}" <url>

用 python 做同样的事情requests

import requests

r = requests.get(url, allow_redirects=True)

if r.history:
  print(f'{len(r.history)},{r.history[-1].url}')

我发现 usingrequests history并没有给我最终的目的地(尽管下载的内容与curl.

例如给定网址(这是一个合法的网址,我发誓)https://ludik.xyz/music,这就是我得到的curl

1,https://ludik.herokuapp.com/#/

这是我在 python 中得到的:

1,https://ludik.xyz/music

在 python 中进行所有重定向后,如何获得最终目的地?

标签: pythoncurlredirectpython-requests

解决方案


最终 url 设置在响应对象上:

In [5]: import requests 
   ...:  
   ...: r = requests.get("https://ludik.xyz/music")                                                                                                                                                                                           

In [8]: r.url                                                                                                                                                                                                                                 
Out[8]: 'https://ludik.herokuapp.com/#/'

推荐阅读