#c #sockets #proxy
#c #сокеты #прокси
Вопрос:
Я создаю простой прокси-сервер и столкнулся с проблемой получения ответов с веб-сайта.
Я настроил свой сервер на прием подключений к указанному порту, к которому подключается через конфигурацию прокси-сервера браузера. Сервер может получить запрос, подключиться к указанному веб-сайту, отправить запрос и получить ответ.
Я перенаправляю запрос из браузера на веб-сайт без изменений, но ответы, которые я получаю, всегда содержат ошибки 404.
Это запрос, который я отправляю на веб-сайт, после каждой строки есть r n и r n r n после последней строки.
GET http://www.mywebpage.com/ HTTP/1.1
Host: www.mywebpage.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: text/html,application/xhtml xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cookie: __utma=1.35811746.1525489860.1537250282.1539467023.3; __utmz=1.1537250282.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not provided); _fbp=fb.1.1553849756364.1600689742
Upgrade-Insecure-Requests: 1
Мой код отправки получения выглядит следующим образом.
sendError = send(serverSock, requestString , strlen(requestString) , 0 );
returnedSize = recv(serverSock, buffer, sizeof(buffer), 0);
Ответ №1:
Я перенаправляю запрос из браузера на веб-сайт без изменений…
GET http://www.mywebpage.com/ HTTP/1.1
Абсолютный URL, который вы используете в своем целевом запросе, следует использовать только для прокси. Обычные серверы ожидают исходную форму, то есть только путь и необязательный запрос, но не полный URL. Таким образом, метод, хост и порт должны быть удалены:
GET / HTTP/1.1