Переслать запрос GET на прокси-сервер в C - PullRequest
0 голосов
/ 07 марта 2012

Я пишу код на C, пытаясь сделать очень простой прокси-сервер для некоторой сетевой практики.Моя цель здесь состоит в том, чтобы просто получить запрос «GET» из браузера, используя мой прокси-сервер, затем переслать его на соответствующий сервер, получить информацию обратно с сервера и затем отправить все данные обратно в браузер.Пока что я получил первую часть для работы, т.е. я получил содержимое команды GET.Теперь я действительно застрял на "пересылке".Как мне переслать содержимое GET туда, куда он должен идти, скажем, www.example.com и получить эту информацию обратно?Я, очевидно, не могу использовать один и тот же дескриптор сокета и попробовать использовать команду send, потому что тогда я буду отправлять команду GET обратно в браузер, который пытался ее отправить.Я использовал руководство Биджа и случайные онлайн-советы.Это не первая моя сетевая программа, но я определенно застрял здесь.Я подумал, что мне нужно будет выполнить поиск DNS HOST (который находится в GET), получить IP, а затем использовать getaddrinfor + connect, но затем connect выдает ошибку, что в соединении отказано.Любые советы или подсказки были бы очень полезны для меня .. спасибо

edit: я следовал за другим ответом здесь в стеке, который детализировал шаги, вовлеченные.В основном я до "Перестроить / отправить новый запрос часть"

Open port
Listen on port
Get all request sent from the client to that port (maybe make the whole thing multithreaded to be able to handle more than 1 request at a time)
Determine if it is a valid HTTP 1.0 request
Extract the request components
Rebuild the request according to what type of proxy you are
Send the new request
Get the response
Send response to client

edit2: HTTP 1.1 Proxy

1 Ответ

0 голосов
/ 08 марта 2012

Все, что вам нужно сделать в HTTP-прокси, это внедрить, то есть распознать и выполнить команду CONNECT. Как только у вас это заработает, все остальное просто копирует байты туда и обратно.

...