python - GCP:如何动态更改 VM 实例的公共 IP 并保持连接
问题描述
我们在 Compute Engine 中有许多用于抓取的 VM 实例,它们可能会在某些站点中被阻止,然后我们尝试使用 NordVPN 更改 IP。当我们检测到我们被阻止时,我们正在尝试创建一个 Python 脚本来自动更改 IP。目前,我们正在使用我们最近发现的这个 Python 包:NordVPN-switcher,但我们遇到了下一个错误:
Connecting you to Denver ...
An unknown error occurred while connecting to a different server!
An unknown error occurred while connecting to a different server! Retrying with a different server...
Traceback (most recent call last):
File "demo.py", line 13, in <module>
rotate_VPN(instructions) # refer to the instructions variable here
File "/home/eduardo_santos_housecallprosolut/.local/lib/python3.8/site-packages/nordvpn_switcher/nordvpn_switch.py", line 514, in rotate_VPN
raise Exception("Unable to connect to a new server. Please check your internet connection.\n")
Exception: Unable to connect to a new server. Please check your internet connection.
注意:我们有互联网连接。
虚拟机实例也安装了 NordVPN,如果我们手动尝试,我们可以更改它,但由于我们使用 SSH 连接到实例,在我们更改 IP 的那一刻,连接丢失。
那么,目前的问题是:
- 如何正确动态更改实例的IP?
- 更改发生后如何保持连接。
注意:爬虫和所有逻辑都是docker化的,Python版本是3.9
正如我在开始时提到的,我们有很多机器用于抓取,我们希望保留每个使用的 IP 的注册表,以便更好地分配,可能使用 Redis DB 或 MongoDB 中的小型集合。你怎么看待这件事?什么是开发这个的好方法?
太感谢了。
解决方案
我今晚在具有公共 IP 的 VM 上尝试了这个,然后我删除了公共 IP,它继续工作。这可能是解决方案!
您可以使用 IAP连接到您的虚拟机。像这样在带有 gcloud 的终端中执行此操作:
gcloud compute ssh --tunnel-through-iap -project=$project_name --zone=us-west2-a $instance_name
让我知道。如果它不适合你,我将删除答案
推荐阅读
- javascript - 根据在javascript中选择的输入语言设置输入文本的长度
- powershell - 如何查看自己邮箱中的文件夹?
- python - Python NLP:使用 TextBlob、StanfordNLP 或 Google Cloud 识别句子的时态
- ansible - 我想执行一个 Zabbix 动作来运行一个 ansible 剧本
- c++ - 为什么我可以将 ifstream 文件置于 if 条件中?
- mysql - 自动授予对新创建表的 INSERT 权限
- python - 脚本不在终端中运行,但在 IntelliJ 中工作
- c++ - 如何跳过 CMake 编译器识别?
- c# - 无法获取共享文件夹原始文件(系统路径)
- sql-server - SQL- 使用 Powershell 和集成安全性作为计划任务进行查询不起作用?