2017-09-05 17 views
0

의 터널을 만드는 방법이 질문 질문 : Wrap packets in connect requests until reach the last proxy파이썬은 프록시

을 그리고 난에있는 프록시의 체인을 만들 것을 배웠 :

  • 를 연결하세요 만들 소켓을

    • 을 프록시 대 소켓
    • HTTP 또는 SOCKS를 사용하여 A를 통해 프록시 B로 터널을 만듭니다. 프로토콜이 비슷합니다.
    • 프록시 C simi에 대해 [A, B]를 통해 터널을 만듭니다. 마지막 프록시가
      최종 목표 T에 터널이

  • 내가 가진 내장에 지시 할 때까지 경
  • 은 ... [A, B, C] D
  • 을 통해 터널을 만들 내가 난 그냥 프록시 A.에 대한 HTTP 요청에 헤더를 "CONNECT"을 추가한다고 생각 원인, 두 번째 점까지해야하지만 내 질문은이 예제 HTTP 요청에 입니다 :

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

    에서 호스트 헤더를 다시 프로에 넣어야한다. xy ip 또는 다른 것? 프록시 B ip 또는 최종 사이트 도메인처럼?

    또한 세 번째 점에서 다음 점으로 이동하는 방법을 이해하지 못했습니다. 프록시 A에 터널을 만들고 프록시 B에 프록시 B를 작성하는 방법을 모르므로 최종 사이트로가는 프록시 C 로의 터널 ..

    파이썬으로 어떻게 할 수 있습니까? 아니면 의사가?

  • +0

    일부 영감 https://superuser.com/questions/96489/an-ssh-tunnel-via-multiple-hops –

    답변

    1

    CONNECT가있는 호스트 헤더가 없습니다. 나는. 당신은 그냥 사용하는 HTTP 프록시 B에 터널을 만들 HTTP 프록시 A를 요청하려면 다음

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

    을 그리고 당신은 당신이 다음 T를 대상으로하는 또 다른 터널을 만들 수있는이 터널 내부 프록시 A. 통해 프록시 B이 터널을 가지고, 같은 소켓 송신에 IE와 옆에 나타납니다 모든 프록시를 사용하면 임의의 호스트와 포트에 연결하고 그들은 또한 터널 내부의 터널과 같은 임의의 프로토콜하지만 같은 선택된 프로토콜을 허용하지 않을 수 있도록

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

    주 HTTPS.

    +0

    다시 한 번 감사드립니다. 당신의 대답을 받아 들일 수 있기 전에, 나는 당신에게 물어보고 싶습니다. 양말 요청은 어떻습니까? HTTP 프록시의 경우이 CONNECT 패킷을 보내야합니다. 그리고 양말 은요? HTTP 프록시와 같은 CONNECT 헤더와 함께 HTTP 요청을 보내야합니까? – AllExJ