Apunta-lo Socket.Connect() a un servidor SOCKS abre unha conexión TCP con ese servidor. Os seguintes bytes aínda teñen que falar SOCKS. Enviar o protocolo da aplicación de inmediato deixa o servidor esperando outra conversación.

Con SOCKS5, o establecemento da conexión inclúe a negociación do método, calquera intercambio de autenticación seleccionado e unha solicitude que nomea o destino. Só unha resposta correcta abre o camiño para os bytes da aplicación. Estas etapas defínense no RFC 1928.

Mantén a negociación na capa de conexión

Unha aplicación co seu propio protocolo TCP pode usar un conector consciente do proxy que devolva un fluxo xa establecido. O resto da aplicación le e escribe a través dese fluxo. Un conector debe ter en conta lecturas parciais, enderezos de lonxitude variable, fallos de autenticación e un prazo para a negociación.

Unha implementación escrita á man que le un único búfer de tamaño fixo e supón o éxito é fráxil. TCP non conserva os límites das mensaxes SOCKS. Le a resposta completa descrita polo seu tipo de enderezo antes de iniciar o protocolo da aplicación. Un lector de respostas CONNECT para .NET 7+ ilustra ese paso.

Se unha biblioteca mantida xa fornece esta capa de conexión, comproba as súas versións de SOCKS compatibles, os seus métodos de autenticación e o seu framework de destino. Unha ligazón de foro de hai unha década é un punto de partida para investigar, non unha proba de compatibilidade actual.

A configuración do cliente HTTP ten un ámbito aparte

A configuración de proxy dun cliente HTTP configura ese cliente HTTP. Non modifica cada socket en bruto do proceso. A API de Socket acepta un extremo de rede e deixa a negociación de nivel superior a quen chama.

Para un protocolo de aplicación cifrado, realiza o seu aperto de mans TLS despois de establecer o túnel do proxy. Valida a identidade do destino previsto nesa etapa. A autenticación do proxy e a do destino seguen sendo distintas aínda que usen o mesmo fluxo subxacente.

Artigos relacionados