원하는 모든 요청은 서버와 포트로 들어오는 모든 요청을 동일한 서버와 다른 포트로 전달하고 선택적으로 하나의 헤더를 추가합니다.C에서 간단한 프록시 전달 서버 만들기
그게 전부입니다. 쓸 수있는 정말 간단한 C# 프로그램이 여기 있습니다. 여기에서 바이트를 가져 와서이 다른 포트로 푸시하고 응답과 마찬가지로 클라이언트에 던졌습니다.
원하는 모든 요청은 서버와 포트로 들어오는 모든 요청을 동일한 서버와 다른 포트로 전달하고 선택적으로 하나의 헤더를 추가합니다.C에서 간단한 프록시 전달 서버 만들기
그게 전부입니다. 쓸 수있는 정말 간단한 C# 프로그램이 여기 있습니다. 여기에서 바이트를 가져 와서이 다른 포트로 푸시하고 응답과 마찬가지로 클라이언트에 던졌습니다.
sTCPPipe by Luigi Auriemma는 필요한 단순한 C++ TCP 파이프 구현이지만 추가 헤더를 추가 할 수는 없습니다.
HTTP 헤더 검사를 수행하고 간단한 터널이 아닌 프록시 역할을하는 C# 구현의 경우 Mentalis proxy project을 확인하십시오. HTTP 호스트 헤더에 지정된 주소 대신 모든 요청을 하나의 주소로 보내도록 원본 주소를 쉽게 수정할 수 있지만 원본은 스파게티 위임입니다.
또는 포트 8080을 수신 대기하고 다른 호스트 (다른 소켓 사용)에 연결을 연결하고 두 호스트 사이의 모든 트래픽을 릴레이 한 후 TcpListener
으로 직접 작성할 수 있습니다. 비 블로킹 소켓을 사용하지 않는다면, 이것을 수행하기 위해 약간의 스레드를 사용해야 할 것입니다.
상업용으로 사용하려면 프록시를 작성하는 것이 신뢰성 있고 모든 유형의 버퍼 오버플로 공격을 견딜 수 있는지 확인해야합니다.
대리인 스파게티는 내가 최근에 찾은 문구입니다. 감사합니다 :) –
코드 예제가 아닌 참조를 찾고있었습니다. Mentalis는 섭취하기가 너무 어렵습니다. –
Mentalis는 거대한 프로젝트이지만 모든 HTTP 프록시 기능은'HttpListener.cs'와'HttpClient.cs'에 있습니다. 단지 코드를 읽었을 때 이해하기 어렵지 않습니다. 일반적으로'RebuildQuery()'메소드를 수정하여 커스텀 헤더를 추가하기를 원할 것입니다. 간단한 코드 샘플을 줄 수 있는지 알아 보겠습니다. –
전달 TCP 연결은 쉽지만 헤더 (아마도 HTTP 요청)를 추가하면 요청을 검사하고 구문 분석해야하는 프록시가 포함됩니다. –