2010-03-15 6 views
-3

Eh bien, fondamentalement, j'ai une application de raclage. Il racle environ n objets par minute. actuellement je n'ai qu'une adresse IP.Raclage avec plusieurs IP, en Java

Le site que je gratte me permet 3 connexions par IP.

Je pense à obtenir une autre adresse IP.

alors je serai en mesure d'obtenir 6 connexions.

En théorie, je devrais être capable d'obtenir n éléments en 40 secondes, plus ou moins.

actuellement j'utilise java (commons-httpcore) pour faire le travail.

Je ne sais pas si c'est une question java ou une question de système d'exploitation.

ma machine a IP 1 et IP 2 comment me connecter, par exemple, www.microsoft.com, en utilisant IP 1 et en utilisant IP2? comment puis-je spécifier, quelle ip je veux utiliser pour faire une connexion?

+9

a-t-il vous eu à ce qu'ils limitent le nombre de connexions par IP, car ils ne veulent pas vous faire quelque chose comme ça? – RHSeeger

+0

Est-ce que cela a été downvoted simplement parce qu'il s'agit de grattage de page Web? (Qui n'est pas tout à fait légal?) –

+0

Ce que RHSeeger a dit. –

Répondre

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

Voir: http://hc.apache.org/httpcomponents-client/httpclient/apidocs/index.html

+0

Cela ne fonctionnerait que si le serveur est assez naïf pour étrangler par IP sur la base de l'adresse IP placée dans les en-têtes http par le client. En d'autres termes: peu probable. –

+1

La plupart des applications bien écrites ont des netscalars/ou une configuration de routeur où ils "physiquement" recherchent réellement votre adresse IP (et non ce que vous avez défini dans le champ d'en-têtes). Je travaille dans l'industrie du jeu et c'est une obligation légale de le faire (pour bloquer les paris de certains pays) –

+0

@david Je pense que vous avez mélangé du httpclient 3.x avec 4.x là @matt @calm en utilisant 'ConnRoutePNames. LOCAL_ADDRESS' ne définit aucun en-tête mais permet en réalité de définir l'adresse IP à utiliser (en interne en utilisant 'Socket.bind (SocketAddress)'). – sfussenegger