2009-11-17 7 views
4

Je veux utiliser un proxy avec ce script perl mais je ne suis pas sûr de savoir comment l'utiliser avec un proxy.Utiliser un proxy avec le script perl

#!/usr/bin/perl 
use IO::Socket; 
$remote = IO::Socket::INET->new(
         Proto => "tcp", 
         PeerAddr => "localhost", 
         PeerPort => "8080", 
        ) 
        or die "cannot connect"; 
print $remote "GET/HTTP/1.0\n\n"; 
    while (<$remote>) { print } 
+0

Toujours à la recherche d'une solution non-LWP – Hintswen

Répondre

9

Utilisez le module LWP :: UserAgent, qui a intégré proxy support.

+0

+1. C'est beaucoup plus facile que d'essayer de le faire vous-même. – rjp

+0

Je préfère ne pas utiliser LWP :: UserAgent cependant. -sigh- – Hintswen

+0

@Hintswen - Quelle est la raison pour laquelle vous préférez ne pas la solution LWP :: UserAgent réalisable - pourquoi le soupir? –

1

droite d'un de mes scripts:

use LWP::UserAgent; 
my($ua) = LWP::UserAgent->new; 

if ($opts->{'proxy'}) { 
    my($ip) = Sys::HostIP->hostip; 
    if (($ip =~ m{^16\.143\.}) || 
     ($ip =~ m{^161\.}) || 
     ($ip =~ m{^164\.})) { 
     $ua->proxy(http => 'http://localhost:8080'); 
    } 
    else { 
     $ua->proxy(http => ""); 
    } 
} 
else { 
    $ua->env_proxy; 
} 

#***** get current entry ***** 
my($req) = HTTP::Request->new(GET => "http://stackoverflow.com/questions/1746614/use-proxy-with-perl-script"); 
my($raw) = $ua->request($req)->content; 
7
use LWP::UserAgent; 
    $ua = LWP::UserAgent->new; 
    $ENV{HTTP_proxy} = "http://ip:port"; 
    $ua->env_proxy; # initialize from environment variables 
    my $req = HTTP::Request->new(GET => 'http://google.com/'); 
    print $ua->request($req)->as_string; 
    delete $ENV{HTTP_PROXY}; 
Questions connexes