我正在 AWS 托管服务器上运行一些网络爬取作业。爬虫从电子商务网站抓取数据,但最近爬虫从该网站获取“超时错误”。该网站可能根据我的 IP 地址限制了我的访问频率。分配一个新的弹性 IP 地址可以解决问题,但不会长久。
我的问题:是否有任何服务可用于自动和动态地分配新 IP 并将其关联到我的实例?谢谢!
我正在 AWS 托管服务器上运行一些网络爬取作业。爬虫从电子商务网站抓取数据,但最近爬虫从该网站获取“超时错误”。该网站可能根据我的 IP 地址限制了我的访问频率。分配一个新的弹性 IP 地址可以解决问题,但不会长久。
我的问题:是否有任何服务可用于自动和动态地分配新 IP 并将其关联到我的实例?谢谢!
要更改 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)
如果您想使用 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。
简单又安全。