2010-08-07 5 views
5

Abbiamo alcuni siti Web diversi in esecuzione sullo stesso server che accedono a un particolare servizio Web con ciascuno la propria chiave API unica. Sfortunatamente il servizio web ha un limite giornaliero basato sull'indirizzo IP (non sulla chiave API), quindi, mentre ciascuno dei nostri siti è al di sotto del limite giornaliero, sono cumulativi rispetto al limite IP. Quando si accede tramite un browser Web, ciascun sito Web viene eseguito su un indirizzo IP statico diverso, tuttavia quando gli script perl vengono eseguiti in ciascun account utente del sito Web, il loro indirizzo IP in uscita è identico.Utilizzo di diversi IP in uscita in Perl

La mia domanda è: come posso fare in modo che ogni script perl utilizzi l'indirizzo IP corretto di quel particolare sito in modo che ognuno possa rimanere entro il limite giornaliero del servizio web? Più semplicemente, come può uno script perl cambiare l'indirizzo IP in uscita delle chiamate che sta facendo usando il modulo perl LWP? Le spiegazioni sono grandi ma gli esempi di codice potrebbero essere ancora migliori.

Grazie in anticipo per il vostro aiuto!

+0

questa domanda è di circa bypassando meccanismo di sicurezza di un sito, e spoofing di un indirizzo IP. Da quello che sto leggendo il sito non ha un indirizzo IP separato. – xenoterracide

+0

@Xeno: Ha specificato "ogni sito Web viene eseguito su un indirizzo IP statico diverso". –

+0

@Jim oh Ho letto male ... – xenoterracide

risposta

9

Usando LWP::UserAgent si può semplicemente utilizzare il metodo '' local_address '' per decidere quale indirizzo IP che si desidera per le connessioni in uscita:

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

Puoi anche passare 'local_address' come parametro al costruttore UA. (Nota: dovresti usare 'LWP :: UserAgent-> new' invece di' new LWP :: UserAgent'. La sintassi degli oggetti indiretti è meglio evitare.) – cjm

+0

Ha funzionato come un incantesimo. Grazie ragazzi! –

+0

Cosa succede se non è specificato l'indirizzo locale? In che modo LWP seleziona un indirizzo se ci sono più indirizzi? È una selezione casuale, un round robin, ecc.? – MadHacker