example - ¿Cómo un proxy HTTP utiliza el protocolo HTTP? un Proxy RFC?
rfc http (3)
¿Cómo se puede implementar un proxy HTTP en comparación con la implementación de un servidor web HTTP, cuáles son las diferencias? ¿Existe una guía definitiva o RFC o un libro útil sobre este tema?
El encabezado enviado a un proxy es diferente.
Por ejemplo, esto es lo que Google Chrome envía a www.baidu.com a través de un servidor proxy:
GET http://www.baidu.com/ HTTP/1.1
Host: www.baidu.com
Proxy-Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
DNT: 1
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8
Podemos ver que es
GET http://www.baidu.com/ HTTP/1.1
en lugar de
GET / HTTP/1.1
y aqui esta
Proxy-Connection: keep-alive
además
Host: www.baidu.com
El campo host es obligatorio para el proxy http.
Para el proxy de túnel HTTPS:
CONNECT comet.zhihu.com:443 HTTP/1.1
Host: comet.zhihu.com:443
Proxy-Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
Podemos ver
CONNECT comet.zhihu.com:443 HTTP/1.1
domain:443
lugar de https://domain
.
El campo CONECTAR convierte el servidor proxy en algo así como un túnel TCP, luego el protocolo HTTPS
es reemplazado por el puerto :443
Para el proxy socks5, las cosas se vuelven fáciles, porque a socks5 no le importa el protocolo más alto, solo le dices host y puerto.
Los requisitos de los servidores proxy HTTP se especifican en
RFC7230 - Protocolo de transferencia de hipertexto (HTTP / 1.1): sintaxis de mensajes y enrutamiento
Un proxy es muy similar a un servidor; la única diferencia es que, después de analizar la solicitud, simplemente la reenvía y devuelve el resultado *, en lugar de procesar la solicitud en sí. Debido a que el proxy no tiene que hacer la misma cantidad de procesamiento que un servidor normal, a menudo puede obtener un análisis de las solicitudes mucho más mínimo que un servidor completo, pero de lo contrario es la misma idea.
* Algunos proxies implementan almacenamiento en caché adicional. Algunos también lo hacen con la respuesta / solicitud, pero ese es el tipo de proxy malvado, que ojalá no tengas en mente.