【问题标题】:AWS: dynamically allocate & associate new IP addresses to EC2 instance?AWS:动态分配新 IP 地址并将其关联到 EC2 实例?
【发布时间】:2015-03-06 04:15:42
【问题描述】:

我正在 AWS 托管服务器上运行一些网络爬取作业。爬虫从电子商务网站抓取数据,但最近爬虫从该网站获取“超时错误”。该网站可能根据我的 IP 地址限制了我的访问频率。分配一个新的 Elastic-IP 地址可以解决问题,但不会长久。

我的问题:是否有任何服务可用于自动和动态地分配新 IP 并将其关联到我的实例?谢谢!

【问题讨论】:

  • 你考虑过使用tor吗?
  • @Gas 谢谢!如果我选择不使用 Tor 浏览器,它会起作用吗?我的爬虫(用 Java 编写)直接向目标网站发送 HTTP 请求,而不是调用真正的浏览器。
  • @UriAgassi,谢谢,我知道我可以在管理控制台或使用 CLI 工具分配新的 Elastic-IP。有没有可以自动执行此操作的工具?或者基本上我需要编写自己的脚本?谢谢
  • 你应该编写自己的脚本

标签: amazon-web-services amazon-ec2 cloud-hosting dynamic-ip


【解决方案1】:

要更改 EIP,您只需使用 Python boto

类似这样的:

#!/usr/bin/python

import boto.ec2

conn = boto.ec2.connect_to_region("us-east-1",
    aws_access_key_id='<key>',
    aws_secret_access_key='<secret>')


reservations = ec2_conn.get_all_instances(filters={'instance-id' : 'i-xxxxxxxx'})
instance = reservations[0].instances[0]

old_address = instance.ip_address
new_address = conn.allocate_address().public_ip

conn.disassociate_address(old_address)
conn.associate_address('i-xxxxxxxx', new_address)

【讨论】:

    【解决方案2】:

    如果您想使用 TOR 网络,只需执行:

    sudo apt-get install tor 
    sudo /etc/init.d/tor start
    
     netstat -ant | grep 9050 #  Tor port
    

    在您的 java 项目中,您将代理设置为:

    public static void main(String[] args) {
        System.setProperty("socksProxyHost", "127.0.0.1");
        System.setProperty("socksProxyPort", "9050");
    

    您可以安排一个 cron 作业,每 XX 次重新启动您的应用程序和 tor。

    简单又安全。

    【讨论】:

    • 太好了,感谢这个不错的选择。使用这种方法听起来我需要修改我的 Java 代码并重新启动 Tor。分配新IP更容易维护。如果效果不好,我会检查一下。
    猜你喜欢
    • 2021-04-19
    • 1970-01-01
    • 2018-09-14
    • 2018-11-15
    • 2020-10-26
    • 2019-01-01
    • 2014-03-23
    • 1970-01-01
    • 2022-07-29
    相关资源
    最近更新 更多