gpt4 book ai didi

python - 有没有办法使用系统默认网关以外的其他网关在 python 中发出 http 请求?

转载 作者:行者123 更新时间:2023-12-01 02:34:56 31 4
gpt4 key购买 nike

我想在 Python 脚本中模拟通过 http(s) 下载文件。该脚本用于测试本地 LAN 中的路由器/调制解调器设备。

目前,我已将虚拟机网络配置为使用该设备作为默认网关和 DNS。我的测试机上的 python 脚本使用 Phython 的 paramiko 库通过 ssh 进入虚拟机。在使用此 ssh 连接的 python 脚本中,我运行 wget https://some.websi.te/some_file.zip。这看起来有点矫枉过正,但我​​不想在运行测试脚本的机器上重新配置网络。

有没有一种方法可以消除额外的虚拟机(通过 ssh 运行 wget 的虚拟机)并仍然模拟下载?当然,这应该在我的本地计算机上的 python 测试脚本中运行?

换句话说,我可以让 python 在脚本中使用除系统默认值之外的另一个网关吗?

最佳答案

我可以提供两种方法来满足您的需求:一种是糟糕的方法,另一种是干净的方法。我们来谈谈不好的方法:

如果您的脚本使用系统的“默认网关”,可能可以通过为您的脚本使用的目的地设置专用路由进入您的系统,以避免您的脚本使用默认网关,可能就足以解决你的问题。这是一个糟糕的方法,因为不仅您的脚本会受到影响,从您的主机到该目的地生成的所有流量也会受到影响。

我们来谈谈干净的方式。我想您正在运行 Linux,但我认为您可以在所有支持内核多路由表功能的操作系统中执行相同的操作。

以下是您需要执行的步骤的摘要:

  • 使用 ip 命令和“table table_name”选项准备第二个(或第三个...)路由表
  • 使用 uidrange 选项使用 ip 规则创建规则流量选择器。此选项允许您根据用户的 UID 选择流量。

完成这些步骤后,您可以通过在 ip-rule 命令中选择的 UID 范围内创建用户帐户来测试您的设置,并测试您的路由设置。

最后一步是修改你的 python 脚本,将你的 uid 切换到 ip-rule 中选择的 uid,并在你完成生成流量后从中存在。

总结一下干净的方法,它与糟糕的方法相同,但只是通过使用多路由表内核功能针对 Linux 系统的有限数量的用户 uid,并切换到选定的用户进入您的脚本以使用特殊的路由设置。

内核的多路由表功能是我认为能够按照您的要求合并两个不同系统(您的主机及其虚拟机)的唯一功能,而无需虚拟机。您可以通过在任何语言的脚本中从一个用户切换到另一个用户来激活该功能。

关于python - 有没有办法使用系统默认网关以外的其他网关在 python 中发出 http 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46362927/

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