Análisis del código fuente OkHttp (3): proxy y enrutamiento
● HTTP/1.1(HTTPS)
● HTTP/2
● SPDY
A /p/63ba15d8877a
1. Construya un objeto de dirección.
2. Lea la configuración del proxy: resetNextProxy
3. Resuelva la dirección del socket del servidor de destino.
4. Seleccione una ruta para crear una RealConnection.
5. Determine el protocolo
Método de prueba:
●Abra Charles en la PC, configure el puerto y cómo configurar el proxy. Hay tutoriales en Internet, que son relativamente simples;
●Abra el WIFI en el teléfono móvil, seleccione el WIFI conectado para modificar la red y especifique el servidor proxy, la IP de la PC y el puerto que Charles simplemente configúrelo en la configuración de opciones avanzadas;
● OkHttpClient inicia una solicitud sin especificar un proxy.
1. Construya el objeto de dirección.
2. Lea la configuración del proxy: resetNextProxy
3. Resuelva la dirección del socket del servidor de destino.
4. Seleccione una ruta para crear una RealConnection.
5. Crear un túnel
Debido a que es un proxy para solicitudes https, se requiere un proxy de túnel.
Como se puede ver en la figura, establecer un túnel en realidad es enviar una solicitud CONNECT. El encabezado incluye el campo Proxy-Connection y el nombre del host de destino. El contenido de la solicitud es similar:
6. Determine el protocolo, protocolo de enlace SSL
1. Los servidores proxy se pueden dividir en servidores proxy HTTP y servidores proxy SOCK;
2. apoderados. Los servidores proxy ordinarios son adecuados para la transmisión de texto sin formato, es decir, las solicitudes http; los servidores proxy de túnel solo reenvían paquetes TCP y son adecuados para la transmisión cifrada, es decir, https / http 2;
3. SOCK4 y SOCK5. La diferencia es que este último admite la transmisión UDP y es adecuado para herramientas de chat de agentes como QQ.
4. Sin configurar el proxy (no especifique OkHttpClient, no configure el sistema), el cliente establece directamente una conexión TCP con el servidor de destino
5. colocar. Cuando se envía una solicitud http, el cliente establece una conexión TCP con el servidor proxy. Si el servidor proxy es un nombre de dominio, el nombre de dominio del servidor proxy se interpreta y el servidor proxy resuelve el nombre de dominio del servidor de destino.
6. El proxy ha sido configurado. Cuando se utiliza un proxy para solicitudes https/http2, el cliente establece una conexión TCP con el servidor proxy, envía una solicitud CONNECT para establecer un túnel con el servidor proxy y realiza un protocolo de enlace SSL. El servidor proxy no analiza los datos, solo reenvía paquetes TCP.
Cómo utilizar correctamente el proxy HTTP
Proxy y enrutamiento en OkHttp3
Principio e implementación del proxy HTTP (1)