> 백엔드 개발 > Golang > http 프록시 터널을 통해 Client Hello를 보내는 방법

http 프록시 터널을 통해 Client Hello를 보내는 방법

王林
풀어 주다: 2024-02-12 18:06:15
앞으로
498명이 탐색했습니다.

如何通过 http 代理隧道发送 Client Hello

질문 내용

백엔드 서비스에 대한 TLS 연결을 설정하는 클라이언트가 있습니다.

제가 겪은 상황은 두 가지입니다.

  1. 네트워크 직접 연결: 클라이언트 --->서버

    이 환경에서는 다음 코드와 같이 클라이언트가 서버에 직접 연결됩니다.

으아아아
  1. 프록시 네트워크: 클라이언트--->프록시--->서버

    이 환경에서 클라이언트는 http 프록시 뒤에 있으며 클라이언트는 프록시 http 터널을 활용하여 클라이언트와 서버 간에 트래픽을 전달해야 합니다.

    클라이언트 측에서 golang.org/x/net/proxy를 사용하여 프록시에 연결합니다. 프록시는 http 프록시이므로 클라이언트는 net.dialer를 사용하여 tcp를 통해 프록시에 연결해야 합니다.

으아아아

사례 1, 클라이언트는 네트워크 트래픽 패킷에서 tls 연결을 시작합니다. 3번의 핸드셰이크 후에 클라이언트는 client hello를 서버로 보냅니다.

케이스 2의 경우 클라이언트는 먼저 tcp를 사용하여 http 프록시(예: 10.0.0.1:8080)에 연결하고, 다음으로 프록시에 connect를 보낸 다음 프록시가 connectionowned를 반환합니다. , 그러나 클라이언트는 connect到代理,然后代理返回connectionestablished,但是客户端发送client hello를 서버로보냅니다.

case2의 경우 클라이언트 측에서 전송을 구현하는 방법과 위치를 모르겠습니다 client hello?

미리 감사드립니다.

Solution

go doc을 검색한 후 해결책을 찾았습니다. 나중에 비슷한 문제를 겪는 사람들에게 도움이 되길 바랍니다.

tls에는 기존 네트워크에서 구축할 수 있는 client 기능이 있습니다. Conn, 그럼 Handshake

를 사용해 보세요 으아아아

위 내용은 http 프록시 터널을 통해 Client Hello를 보내는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿