/ / Connexion socket utilisant perl UserAgent - perl, proxy, websocket

Connexion par socket avec perl UserAgent - perl, proxy, websocket

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 № 1

Je 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.