2010-08-07 5 views
5

Wir haben ein paar verschiedene Websites, die auf demselben Server laufen, die alle auf einen bestimmten Webdienst zugreifen, von denen jeder seinen eigenen eindeutigen API-Schlüssel hat. Leider hat der Web-Service ein Tageslimit basierend auf der IP-Adresse (nicht API-Schlüssel). Obwohl jede unserer Seiten weit unter ihrem Tageslimit liegt, liegen sie über dem IP-Limit. Beim Zugriff über einen Webbrowser läuft jede Website unter einer anderen statischen IP-Adresse. Wenn Perl-Skripts unter den einzelnen Benutzerkontos der Website ausgeführt werden, ist ihre ausgehende IP-Adresse jedoch identisch.Verschiedene ausgehende IPs in Perl verwenden

Meine Frage ist, wie kann ich es so machen, dass jedes Perl-Skript die richtige IP-Adresse der jeweiligen Website verwendet, so dass jeder innerhalb der täglichen Grenze des Web-Service bleiben kann? Einfacher ausgedrückt, wie kann ein Perl-Skript die ausgehende IP-Adresse der Anrufe ändern, die es mit dem LWP Perl-Modul macht? Erklärungen sind großartig, aber Codebeispiele wären noch besser.

Vielen Dank im Voraus für Ihre Hilfe!

+0

diese Frage bezieht sich auf eine Website Sicherheitsmechanismus umgangen wird, und Spoofing eine IP-Adresse. Von dem, was ich lese, habe die Seite keine eigene IP-Adresse. – xenoterracide

+0

@Xeno: Er hat angegeben "jede Website läuft auf einer anderen statischen IP-Adresse". –

+0

@Jim oh Ich habe das falsch gelesen ... – xenoterracide

Antwort

9

Mit LWP::UserAgent können Sie einfach verwenden, um die ‚‘ local_address ‚‘ Methode zu entscheiden, welche IP-Adresse, die Sie für ausgehende Verbindungen wollen:

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

Sie können auch 'local_address' als Parameter an den UA-Konstruktor übergeben. (Hinweis: Sie sollten 'LWP :: UserAgent-> new' anstelle von' new LWP :: UserAgent' verwenden. Die indirekte Objekt-Syntax wird am besten vermieden.) – cjm

+0

Arbeitete wie ein Zauber. Danke Leute! –

+0

Was passiert, wenn keine lokale Adresse angegeben ist? Wie wählt LWP eine Adresse aus, wenn mehrere Adressen vorhanden sind? Ist es eine zufällige Auswahl, Round Robin, etc? – MadHacker