在java中使用多个IP进行刮取

在java中使用多个IP进行刮取,java,web-scraping,Java,Web Scraping,基本上我有一个刮削应用程序。 它每分钟刮取大约n个项目。 目前我只有一个IP 我正在抓取的站点每个IP允许3个连接 我在考虑换一个IP 所以我可以得到6个连接 理论上,我应该能够在40秒内得到n个项目,或多或少 目前我正在使用JavaCommonsHttpCore来完成这项工作 我不确定这是java问题还是操作系统问题 我的机器有IP 1和IP 2 我如何连接到www.microsoft.com, 使用IP1和IP2? 如何指定要使用哪个ip进行连接 // requires HttpCompon

基本上我有一个刮削应用程序。 它每分钟刮取大约n个项目。 目前我只有一个IP

我正在抓取的站点每个IP允许3个连接

我在考虑换一个IP

所以我可以得到6个连接

理论上,我应该能够在40秒内得到n个项目,或多或少

目前我正在使用JavaCommonsHttpCore来完成这项工作

我不确定这是java问题还是操作系统问题

我的机器有IP 1和IP 2 我如何连接到www.microsoft.com, 使用IP1和IP2? 如何指定要使用哪个ip进行连接

// requires HttpComponents Client 4.*
DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter(
  ConnRoutePNames.LOCAL_ADDRESS, 
  InetAddress.getByName("10.10.10.10")
);

请参阅:

您是否想到,他们限制每个IP的连接数是因为他们不希望您这样做?是否因为这是关于网页抓取的问题而被否决?哪一个不完全合法?你的意思是说从你的ISP获得两个NIC卡和两个静态IP,并将它们分配给不同的NIC卡?@Calm Storm:这并不违法,但如果你不礼貌地想每40秒刷新一次,系统管理员有权限制或阻止你。@voyager我明白了。我的观点是,投反对票应该用于结构不好的问题,而不是错误的问题。如果这个问题是非法的,那么应该将其标记为删除,而不是否决?只有当服务器足够幼稚,能够根据客户端放置在http头中的IP来限制IP时,这才有效。换句话说:不太可能。大多数编写良好的应用程序都有一些netscalars/或一些路由器配置,它们实际上是在查找您的IP地址,而不是您在headers字段上设置的地址。我在博彩业工作,法律要求我这样做是为了阻止一些人下注countries@david我想您已经混合了一些httpclient 3.x和4.x,其中@matt@calm使用ConnRoutePNames.LOCAL_ADDRESS没有设置任何头,但实际上允许使用Socket.bindSocketAddress设置内部使用的IP地址。