2017-09-05 4 views
0

Je pose cette question: Wrap packets in connect requests until reach the last proxyPython - Comment créer un tunnel de procurations

Et je l'ai appris à créer une chaîne de procurations que je dois:

  • créer une socket
  • connecter le prise de procuration a
  • créer un tunnel par l'intermédiaire de a à B proxy - soit avec HTTP ou SOCKS protocole similaire
  • créer un tunnel au moyen de [a, B] à C proxy simi LAR
  • créer un tunnel via [A, B, C] à D
  • ... jusqu'à ce que votre dernier proxy est chargé de construire le tunnel à la
    T cible finale

je me suis ce que je dois faire jusqu'à ce que le deuxième point, parce que je pense que je viens d'ajouter l'en-tête « CONNECT » à la demande http au proxy A. Mais ma question est, dans cet exemple demande http:

CONNECT ipproxy:80 HTTP/1.1 
Host: ?:80 

en l'en-tête de l'hôte, je devrais mettre à nouveau le pro xy ip ou autre chose? Comme le proxy B ip ou le domaine du site final?

En outre, je ne comprenais pas comment passer du troisième point au suivant ... parce que je ne sais pas comment dire au proxy A de créer un tunnel à proxyB puis proxy B pour créer un tunnel à proxy C qui va au site final ..

Des exemples de comment puis-je le faire avec python? Ou un doc?

+0

Un peu d'inspiration https://superuser.com/questions/96489/an-ssh-tunnel-via-multiple-hops –

Répondre

1

Il n'y a pas d'en-tête Host avec CONNECT. C'est à dire. de demander proxy HTTP A pour créer un tunnel proxy HTTP B vous utilisez simplement:

>>> CONNECT B_host:B_port HTTP/1.0 
>>> 
<<< 200 connections established 
<<< 

Et vous avez ce tunnel proxy B par procuration A. Dans ce tunnel, vous pouvez alors créer un autre tunnel pour cibler T, à-dire sur le même envoi de socket et recevoir ensuite:

>>> CONNECT T_host:T_port HTTP/1.0 
>>> 
<<< 200 connections established 
<<< 

Notez que toutes les procurations vous permettent de vous connecter à des hôtes arbitraires et les ports et ils pourraient aussi ne pas autoriser les protocoles arbitraires comme un tunnel à l'intérieur d'un tunnel, mais seulement des protocoles choisis comme HTTPS.

+0

merci encore. avant que je marque votre réponse acceptée, je veux vous demander, qu'en est-il de demande de chaussettes? Pour le proxy http, je dois envoyer ce paquet CONNECT .. Et pour les chaussettes? Dois-je envoyer une requête HTTP avec un en-tête CONNECT tel qu'un proxy HTTP? – AllExJ