2010-08-07 17 views
5

Nous avons plusieurs sites Web différents qui s'exécutent sur le même serveur et qui accèdent tous à un service Web particulier, chacun ayant sa propre clé API unique. Malheureusement, le service Web a une limite quotidienne basée sur l'adresse IP (pas la clé API), alors que chacun de nos sites est en deçà de sa limite quotidienne, ils sont combinés à la limite IP. Lorsque vous y accédez via un navigateur Web, chaque site Web fonctionne sur une adresse IP statique différente. Toutefois, lorsque les scripts Perl sont exécutés sous chacun des comptes d'utilisateur du site Web, leur adresse IP sortante est identique.Utilisation de différentes adresses IP sortantes en Perl

Ma question est comment puis-je faire en sorte que chaque script Perl utilise l'adresse IP correcte du site particulier afin que chacun puisse rester dans la limite quotidienne du service Web? Plus simplement, comment un script perl peut-il changer l'adresse IP sortante des appels qu'il fait en utilisant le module Perl de LWP? Les explications sont bonnes mais les exemples de code seraient encore meilleurs.

Merci d'avance pour votre aide!

+0

cette question est sur le contournement du mécanisme de sécurité d'un site, et usurper une adresse IP. D'après ce que je lis sur le site, je n'ai pas d'adresse IP séparée. – xenoterracide

+0

@Xeno: Il a précisé que "chaque site web fonctionne sur une adresse IP statique différente". –

+0

@Jim oh j'ai mal lu ... – xenoterracide

Répondre

9

En utilisant LWP::UserAgent vous pouvez simplement utiliser la « méthode » local_address « » de décider que vous voulez l'adresse IP pour les connexions sortantes:

my $ua = new LWP::UserAgent; 
$ua->local_address("10.10.10.10"); 
my $response = $ua->get("http://stackoverflow.com/"); 
+3

Vous pouvez également passer 'local_address' en tant que paramètre au constructeur UA. (Note: vous devriez utiliser 'LWP :: UserAgent-> new' au lieu de' new LWP :: UserAgent'.) La syntaxe des objets indirects est à éviter.) – cjm

+0

Fonctionne comme un charme. Merci les gars! –

+0

Que faire si aucune adresse locale n'est spécifiée? Comment LWP sélectionne-t-il une adresse s'il y a plusieurs adresses? Est-ce une sélection aléatoire, round robin, etc? – MadHacker