首页 > 解决方案 > 使用请求安全处理潜在的恶意 URL

问题描述

我正在构建一个用于分析电子邮件的工具,以尝试确定它们是否是网络钓鱼,我想查看电子邮件中是否有任何链接重定向,以及它们是否重定向了多少次以及重定向到哪里。我目前正在使用请求库来处理所有这些内容,并且为了获取链接的历史记录,您必须调用 .get()。对潜在的恶意 URL 执行此操作是否安全,如果不是,是否有任何方法可以获取重定向信息而不会使我的计算机处于危险之中?

标签: pythonpython-requestsphishing

解决方案


你可以发送一个 HEAD 请求allow_redirects=True

>>> url = "http://stackoverflow.com/q/57298432/7954504"
>>> resp = requests.request(
...     "HEAD",
...     url,
...     allow_redirects=True
... )
>>> resp.history
[<Response [301]>, <Response [302]>]
>>> [i.url for i in resp.history]
['http://stackoverflow.com/q/57298432/7954504', 'https://stackoverflow.com/q/57298432/7954504']

并不是说这是万灵药。其他需要考虑的事情是在 URL 本身上添加一些启发式方法,本着“当你看到一个看起来很糟糕的 URL”的精神。(我喜欢yarl分析 URL。)例如:

  • 文件扩展名是什么?
  • URl 是否使用非标准端口?
  • 域是 IPv4/6 地址还是 localhost?
  • 是否有任何查询参数值本身是有效的 URL?

...等等。


推荐阅读