J'ai un script qui utilise le code suivant pour se connecter à un serveur.
$sock = new IO::Socket::INET (
PeerAddr => $server,
PeerPort => $port,
Proto => "tcp",
);
Cependant, je suis derrière un serveur proxy et je ne peux pas utiliser ce script. Pour surmonter cela, je dois ajouter un support proxy. Une suggestion sur SO consistait à utiliser UserAgent
. Depuis que je suis illettré en Perl, je ne sais pas comment remplacer ce code par celui qui utilise UserAgent
. Je ne veux pas toucher au reste du code. Puis-je redéfinir $sock
en utilisant UserAgent
afin que le fichier de travail de script. Le script dont je parle est disponible ici
Réponses:
1 pour la réponse № 1Je ne suis pas sûr du module "UserAgent" que vousse référant à. Il n’ya pas un module nommé ainsi. Il y a beaucoup de modules avec UserAgent dans le nom, mais je ne connais aucun de ceux qui s’appliquent à votre situation.
En tout cas, je pense que tu cherches IO :: Socket :: Chaussettes. Je n’ai jamais essayé moi-même, mais vous devriez pouvoir faire:
use IO::Socket::Socks;
my $sock = IO::Socket::Socks->new(
ProxyAddr => $hostname_of_your_proxy,
ProxyPort => $port_number_your_proxy_listens_on,
ConnectAddr => $server,
ConnectPort => $port,
);
et laissez le reste du code tel quel.
0 pour la réponse № 2
Je suppose que vous faisiez allusion à cette discussion? Mais il y a une différence entre en obtenirfichiers du serveur HTTP à distance (pour ce LWP :: UserAgent est plus pertinent en effet) et soumission de fichiers via IO :: Socket (:: INET), comme dans le script que vous avez lié.
Vous pouvez utiliser l'excellente solution cjm proposée ou simplement utiliser socat, comme ça:
socat TCP4-LISTEN:9999 TCP4:moss.stanford.edu:7690
... où 9999 fait référence au port du proxy local. Le bon: vous n'aurez pas à "changer la mousse" script; le mal: vous devez installer socat en premier.