Как настроить смартфоны и ПК. Информационный портал
  • Главная
  • Новости
  • Прокси сервер из любого компьютера с любой системой. Создание Proxy-сервера

Прокси сервер из любого компьютера с любой системой. Создание Proxy-сервера

Доброго дня друзья, многие из Вас задумываются над тем, как настроить свои индивидуальные прокси-сервера для работы в социальных сетях, в поисковых системах или для каких-то других целей. Многие возможно пробовали поднять собственные прокси, но результат не увенчался успехом, сегодня я хочу рассказать, как на примере одного из многочисленных сервисов можно настроить прокси для личного пользования, стоимость которых будет варьироваться от 80 рублей, в случае, если Вы будете поднимать не менее 5 прокси, и с каждым новым прокси цена за 1 прокси будет только уменьшаться. Так если поднимать 20 прокси, цена будет всего 58 рублей. Итак, приступим.

Регистрация сервера в сервисе Gigspace и заказ дополнительных ip

Первым делом нам необходимо арендовать сервер в сервисе Gigspace.ru , для этого переходим по >>ссылке << Нажимаем кнопку «Заказать» под VDS.

После этого нас перебрасывает на страницу заказа, но так как система у них до ума не доведена, нам нужно повторно перейти на страницу: http://gigspace.ru/vds_msk.php и уже на данной странице выбрать тарифный план.

После нажатия нас перебросит на страницу регистрации в системе, как нового клиента. Выбираем тип клиента — «Новый клиент».

Заполняем форму регистрации, демонстрировать не буду заполнение формы, так как там нужно вводить только Ваши данные, думаю, что любой справится с заполнением формы, если ищет тему поднятия собственных прокси.

После заполнения выбираем самый первый тарифный план, название которого GiGv-1 M1(230 руб./мес.)

Ниже указываем, что сервер будет без доменного имени и нажимаем кнопку «Дальше».

Далее выбираете период оплаты, я всегда оплачиваю на месяц пользования, так как порой на больший период нет необходимости заказывать прокси, но если на более длительный период будете оплачивать, получите скидку. Ставим галочку напротив пункта «Дополнительный IP (50 руб./мес.)», указываем количество ip, которые нам требуются, эти ip и будут нашими прокси-серверами, я указываю число 5, так как мне данных ip сейчас будет достаточно, Вы же можете заказать другое количество. Резервное копирование нам не нужно. Далее указываем промо-код. если получили. Для своих подписчиков я предоставляю промо-код на скидку 5%, но только после личного обращения ко мне на почту: [email protected] с темой письма ПРОМО-КОД Gigspace . После нажимаем на кнопку «Дальше».

На третьем шаге оформления заказа пишем в комментарий: «Добрый день! Дополнительные ip-адреса хотел бы использовать как прокси для работы в социальных сетях «, ну или что-то подобное. Если не написать, что ip будут использоваться для проксирования траффика, тогда нужно будет сделать дополнительные телодвижения по их настройке

После нажатия на кнопку нас перекидывает на страницу выбора способа оплаты, я всегда предпочитаю оплачивать через WebMoney или Яндекс Деньги, поэтому выбираю Вебмани. А Вы уже выбирайте на свое усмотрение, доступны QIWI, Яндекс Деньги, Вебмани и оплата при помощи Roboxchange (Робокасса).

Далее проходим стандартную процедуру оплаты счета через выбранную систему и ждем порядка 10 минут — 24 часов, все зависит от времени заказа услуги. В этом плане Gigspace медленные, но зато цены на услуги не кусаются. Как только Ваш виртуальный сервер будет создан, Вам на почту придет оповещение о создании сервера.

Настройка прокси-серверов при помощи терминала putty

Теперь приступим к самому интересному — настройке прокси-серверов. Сообщение в почту об успешном создании сервера нам пришло, теперь нас интересуют данные доступа к серверу по протоколу SSH, которые пришли нам в почту.

И программка для подключения к серверу по протоколу SSH, которая называется Putty, скачать ее можно по следующей >>ссылке <<

После того, как Вы скачали архив с программой, извлекаем архив и запускаем файл с названием «PUTTY.exe». Вводим ip адрес в поле «Host Name» и нажимаем «Open».

Теперь в окне ввода вводим логин, который пришел Вам в почту и пароль, пароль в Putty вводить нужно путем нажатия клавиш Shift+Insert, при вводе пароля, он не будет вообще отображаться, имейте это ввиду, после ввода пароля, нажимаем «Enter».

При успешном вводе пароля появится строка #

Если не появилась, повторите ввод пароля путем нажатия Shift+Insert.

Теперь нам нужно узнать наши ip-адреса, для этого снова идем в почту и находим следующее содержимое в сообщении.

Теперь напротив должен появиться список всех ip-адресов, которые Вы заказали, если этого списка нет, пишите в тикет, они порой забывают подключить доп ip, правда это было всего раз за время работы с gigspace. После того, как доп ip подключат, список отобразится.

Так как я подключаю дополнительно 5 ip, в списке у меня будет 1 основной ip и 5 моих дополнительных, т.е. мы сможем поднять 6 прокси всего.

Теперь снова возвращаемся к консоли putty, первым делом вводим команду ifconfig , чтобы определить, подключены ли дополнительные ip адреса к сетевой карте сервера. Если мы видим после ввода команды устройства venet0:0, venet0:1, и т.д., значит хостер настроил подключил к сетевой карте заказанные ip адреса, если этого нет, тогда можете подключить вручную, используя команду: ifconfig eth0:1 xxx.xxx.xxx.xxx 255.255.255.0 up , где xxx.xxx.xxx.xxx — это один из Ваших ip-адресов, аналогично посылаем команды для всех имеющихся ip, меняя при этом последнюю цифру в eth0:1 на eth0:2, eth0:3 и т.д.

После того, как убедились в том, что ip-адреса подключены к сетевой карте, нам нужно установить репозиторий epel для дальнейшей установки софта 3proxy для настройки прокси-сервера, так как данные хостеры предоставляют ОС centos 5, команда установки репозитория будет следующей: rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm . После установки в консоли отобразится следующее:

Теперь устанавливаем софт для настройки проксирования трафика 3proxy, для этого выполняем команду: yum install 3proxy -y . Дожидаемся окончания установки.

Установим удобный текстовый редактор nano, можно использовать стандартный, но мне больше по душе редактор nano. Выполняем команду: yum install nano .

Сделаем бэкап конфига 3proxy командой: mv /etc/3proxy.cfg /etc/3proxy.cfg.back .

Теперь отредактируем конфиг 3proxy, который и будет отвечать за работу наших прокси. Итак, выполняем команду: nano /etc/3proxy.cfg . Перед нами откроется пустой файл. Я предпочитаю настройку прокси с авторизацией по логину и паролю, поэтому продемонстрирую, как настроить прокси с авторизацией по логину и паролю. Вставляем в начало файла посредством нажатия клавиш Shift+Insert следующие строки:

daemon
auth strong
users username:CL:pass
flush
nserver 8.8.8.8
nscache 65536
timeouts 1 5 30 60 180 1800 15 60

конструкция auth strong отвечает за авторизацию по логину и паролю, при дальнейшем использовании прокси, username и pass — это логин и пароль по которому Вы хотите, чтобы были доступны прокси. :CL: трогать не нужно!

Если Вы хотите настроить авторизацию по ip, вместо auth strong пишем: auth iponly . Удаляем строку users… и добавляем доверенные для прокси ip-адреса, путем прописывания строк: allow * xxx.xxx.xxx.xxx . Где xxx.xxx.xxx.xxx — доверенный ip-адрес. Можно также задать несколько ip-адресов и логинов с паролями для прокси.

Теперь перейдем к настройке самих прокси, для Вас я подготовил файлик excel, который Вы можете скачать по >>ссылке <<, чтобы упростить работы с прописыванием прокси в конфиге. Http прокси прописываются следующим образом в конфиге:

proxy -n -a -p8050 -i192.168.0.1 -e192.168.0.1

Где порт Вы можете указать любой, от 1 до 65535, Вы уже на свое усмотрение порт прописываете, в целях безопасности советую использовать значения свыше 10000. 192.168.0.1 — это один из Ваших подключенных к серверу ip-адресов, которые Вы будете использовать в качестве прокси.

Socks прокси прописываются так:

socks -p1000 -i192.168.0.1 -e192.168.0.1

Аналогично, порт Вы ставите свой, ip тоже свой.

При помощи файла excel, который Вы скачали выше, можно быстро сделать необходимые для конфига конструкции, прописав вместо xxx.xxx.xxx.xxx свои ip адреса, обязательно заменить порты , и указать логины и пароли для прокси, скопировать имеющиеся конструкции со столбцов «результат http» и «результат socks», и вставить их в конфиг.

В конечном итоге полный конфиг будет выглядеть так:

Теперь нажимаем ctrl+x для сохранения конфига и нажимаем Y, для подтверждения сохранения файла, а затем нажимаем Enter.

Все, наш конфиг готов, записываем информацию в файл автозагрузки, выполнив команду: chkconfig 3proxy on

Запускаем 3proxy командой: service 3proxy start

Проверяем, работают ли наши прокси, я для проверки использую браузер Mozilla Firefox, для этого открываем Браузер, заходим в «Настройки»—>»Дополнительное»—>»Сеть»—>»Настроить», выбираем «Ручная настройка прокси сервера», вписываем один из наших ip и порт, который Вы прописали, применяем настройки. Теперь попробуем перейти на любой сайт. При появлении окна авторизации прокси, я Вас поздравляю, Вы все настроили Окно должно примерно такое появиться.

Теперь закрываем консоль командой exit или просто на крестик окна и довольствуемся настроенными прокси, друзья! 😉

Заключение

Сегодня я продемонстрировал, как настроить собственные прокси-сервера для анонимной работы в сети интернет. Сразу скажу, что хостеров помимо gigspace валом, но данные хостеры понравились мне именно тем, что они предоставляют разумную цену за дополнительные ip и сервера, которые стабильно работают.

Если Вы будете настраивать свои прокси у других хостеров, данный мануал частично подойдет для Вас, при возникновении вопросов с настройкой, можете обращаться в комментариях к данной записи, думаю, что смогу помочь в решении Ваших вопросов.

Не забываем подписываться на блог и делиться данной записью в соц сетях! Хватит платить посредникам, сделайте свои прокси за меньшую цену! А на рынке цены на прокси сейчас кусаются, уверяю. 😉

Многие пользователи, которые хотят безопасно путешествовать по интернету, стремятся узнать как узнать свой прокси сервер - ip адрес и порт. Как это сделать и для чего это нужно? Важность и нетривиальность поднятого вопроса объясняется назначением прокси. Его основная задача - скрыть личный IP пользователя, путем его замены на другой адрес.

Чаще всего, данная услуга востребована в сфере SMM, где нужно заходить под разными аккаунтами в социальных сетях с одного компьютера. Это сводит к нулю риск блокировки аккаунтов и не вызывает подозрений со стороны модераторов. Иногда, используют . Для иллюстрации поднятой проблемы, вспомните случаи, когда заходили на зарубежный сайт с желанием посмотреть видеоролик или воспользоваться сервисами, но появлялось предупреждение о том, что просмотр ограничен для вашего региона. Такие ситуации возникают сплошь и рядом, но из-за отсутствия подкованности в вопросе, как узнать свой прокси сервер и порт, эти проблемы могут казаться нерешаемыми. Более того, это существенно обедняет возможности пользователя в получении полезной информации, которую можно было бы получить при наличии соответствующего знания.

Выделенными proxy пользуются многие люди. Цели могут быть самые разные: начиная от индивидуального использования и просмотра заблокированных веб-ресурсов, заканчивая корпоративным сегментом, где нормой считается использование огромного количества прокси. Но, в то же время, не каждый может найти ответ: как узнать прокси сервер, который используется в настоящий момент. Попробуем рассмотреть самые действенные варианты, с помощью которых можно легко узнать всю необходимую информацию.

Как узнать адрес прокси сервера - первый способ

Второй способ

Выражаясь фигурально, не всегда следует «лезть в гору», чтобы добиться желаемого пункта назначения. Иногда нужно проявить смекалку и «гору» тактично обойти. Ответ, как узнать адрес прокси, можно получить самым простым способом. Все что нужно - обратиться к системному администратору, который обслуживает локальную сеть. У него хватит компетенции посмотреть прокси и передать его вам. Сложность в том, что не все могут узнать, как связаться с системным администратором. Для решения данной проблемы, рекомендуем обратиться к более знающим людям. Они подскажут, куда звонить, чтоб связаться с администратором.

Третий способ

В панели управления своего компьютера, найдите и откройте пункт «сетевое окружение». В нем нажмите «отобразить сетевые подключения», а затем «подключения по локальной сети». Кликните по нему правой кнопкой и выберите свойства. В открывшемся окне необходимо найти протокол интернета TPC\IP. Опять выбираем «свойства». Если там стоит галочка возле «автоматически получать ip адрес», то никакого выделенного прокси не задействовано, если там будут цифры (например, 10.0.0.20), то это и будет адрес искомого proxy.

Как узнать порт прокси

Помимо адреса и пароля, многих пользователей может заинтересовать и вопрос как узнать порт прокси. Это еще один параметр, который используется при работе со своим . Как правило, используются стандартные значения для порта: 8080, 80 и пр. Лишь в редких случаях значение отличается. Адрес порта можно посмотреть в браузере, выполнив действия, описанные выше. Его значение вписывается рядом с ip адресом. Рабочий порт, по которому в действительности подключается свой proxy, должен соответствовать заявленному значению в настройках системы или браузера, иначе у вас не будет работать соединение с интернетом.

Позволят ускорить работу с SEO софтом и социальными сетями.

Теперь изучим, как можно создать HTTP прокси-сервер. Прокси-сервер - это посредник между пользователем и Интернетом. Допустим, что в вашей локальной сети есть сервер, который подключен выделенным каналом к Интернету. Чтобы все компьютеры получили доступ, нужно установить на сервере посредника, через который локальные компьютеры будут обращаться в глобальную сеть.

Прокси-сервер может маскировать IP-адреса, и в Интернете будет виден только адрес сервера, потому что запросы будут идти от его имени. Помимо этого, современные серверы могут кэшировать информацию и таким образом экономить входящий трафик.

В этой главе мы создадим прокси-сервер, который будет маскировать адрес (все запросы будут идти от имени сервера), но без возможности кэширования. Таким образом, связь будет как бы прозрачной.

Итак, перейдем к практике и изучим, как все работает изнутри. Для начала нужно определиться с используемой технологией. Что выбрать - блокировки, ожидания через select или события Windows? В нашей программе, когда пользователь запросит загрузить какой-либо сайт, мы должны будем получить этот сайт от сервера и передать его пользователю. Это отнимет много времени, и при использовании событий другие пользователи в данный момент работать не смогут.

Для осуществления параллельной работы нам необходимо применять потоки и для каждого подключения создавать собственный экземпляр. На первый взгляд это кажется сложным, но сейчас мы убедимся, что все намного проще, чем кажется.

Теперь переходим к реализации. Создайте новый проект. На форме нам понадобятся три поля ввода:

Порт, на котором будет работать наш сервер и ожидать подключения со стороны клиента; порт внешнего прокси-сервера, если наш должен будет перенаправлять запросы другому серверу. Таким образом, мы сможем строить цепочку из разных прокси-серверов;

Адрес внешнего прокси-сервера.

Помимо этого нужна кнопка, по нажатии которой будет запускаться прокси-сервер. Возможность остановки мы закладывать не будем, хотя эта операция заключается в простой остановке потока сервера.

Пример главной формы будущей программы показан на рис. 5.9.

Рис. 5.9. Форма будущего прокси-сервера

Загрузку сетевой библиотеки WinSock поместим на событие OnCreate для главной формы:

procedure THTTPProxyForm.FormCreate(Sender- TObject). var wData- WSADATA: begin if WSAStartup(MAKEWORDd.l). wData) <> 0 then begin MessageBox(0. "He могу загрузить WinSock". "Ошибка". 0): exit:

End: end:

По нажатии кнопки Запуск нужно запустить прокси-сервер. Для этого мы создадим отдельный поток, и в нем будем ожидать подключения от клиента, чтобы не задерживать работу главной формы. Блокировок в программе не будет.

Procedure THTTPProxyForm.bnStartClick(Sender: TObject). var st: TServerThread: begin st:= TServerThread.Create(true). st iLocal Port:" StrToIntDef(edPort.Text. 8088): st.iExtProxyPort -= StrToIntDef(edExtProxyPort Text. 8080): st.sExtProxyAddr:= edExtProxyAddr.Text: st.Resume: end:

Потоку сервера понадобится информация о том, на каком порте ему работать и где находится следующий сервер. Именно поэтому мы записываем эту информацию в открытые переменные сервера, чтобы они хранились локально. Нет смысла обращаться из потока к главной форме, потому что в будущем вы можете запустить два прокси-сервера на разных портах практически без модификации кода.

Теперь посмотрим на реализацию потока сервера. Для его создания выполните команду меню File New Other (для Delphi 6 и меньшей версии достаточно выбрать File New). Перед вами откроется диалоговое окно задания создаваемого элемента. Выберите Thread Object и нажмите ОК. Должно появиться диалоговое окно ввода имени потока. Введите TServerThread и нажмите ОК.

Полный исходный код (только без знакомых нам процедур проверки сообщений TestFuncError и TestWinSockError) вы можете увидеть в листинге 5.10.

Листинг 5.10. Код потока TServerThread

Unit ServerThreadUnit. interface uses Classes, winsock, windows; type TServerThread = class(TThread) private {Private declarations} protected procedure Execute: override: public i Local Port. i ExtProxyPort:Integer; sExtProxyAddr:Stri ng: end: implementation uses ClientThreadUnit:

procedure TestWinSockError(S:String): begin // Код этой процедуры нам знаком, поэтому урезан для экономии места

function TestFuncErrordErr:Integer: FuncName:String):Boolean; begin // Код этой функции нам знаком, поэтому урезан для экономии места

End; procedure TServerThread.Execute;

Листинг 5.10 (продолжение) var sServerListen. stClientSocket: TSOCKET: local-addr- sockaddMn: ct: TCIientThread; begi n

// Создание сокета

SServerListen:= socket(AF_INET. SOCK_STREAM, 0);

if SServerListen = INVALID_SOCKET then begin MessageBox(0. "Ошибка создания сокета". "Ошибка". 0): exit:

// Заполнение структуры адреса localaddr.sin_addr.s_addr:= htonl{INADDR_ANY): localaddr.sin_family:= AF_INET; localaddr.sin_port:= htonsdLocal Port):

// Связывание сокета с локальным адресом

If TestFuncError(bind(sServerListen. localaddr. sizeof(localaddr)) "bind") then exit:

// Запустить прослушивание

If TestFuncError(listen(sServerListen. 4), "Listen") then exit:

// Цикл обработки подключений от клиента

while true do begin // Принять соединение

StClientSocket:= accept(sServerListen, nil. nil): if StClientSocket = INVALID.S0CKET then continue: i

// Создать поток для общения с клиентом ct:= TClientThread.Create(true): ct.stClient:" StClientSocket: ct iExtProxyPort:= iExtProxyPort: ct sExtProxyAddr:= sExtProxyAddr; ct Resume:

End: end; end.

В разделе pub! i с добавлены три переменные: i Local Port, iExtProxyPort типа Integer и sExtProxyAddr, имеющая тип String. Мы уже пользовались этими переменными, когда рассматривали код создания потока, здесь же видно, как они объявлены.

Основной код серверного потока расположен в процедуре Execute. Сначала создается сокет и запускается прослушивание подключений на порте, указанном пользователем.

В бесконечном цикле while принимаются входящие соединения. Если получен корректный сокет, то создается еще один поток типа TClientThread. В этом потоке будет происходить непосредственное общение между клиентом и сервером. Поток будет выступать для клиента посредником для доступа к веб-страницам. Код потока TClientThread приведен в листинге 5.11.

Листинг 5.11. Поток, выступающий посредником между клиентом и web

Unit ClientThreadUnit.

i nterfасе uses

Classes, winsock. sysutils. windows: type TClientThread = class(TThread) private {Private declarations} protected procedure Execute: override; public iExtProxyPort: Integer; sExtProxyAddr: String: stClient: TSocket: end:

implementation {TClientThread} function LookupName(name: String): TInAddr; begin // Функция определения имени, которая нам знакома

// Функция отправки строки

Procedure SendStr(s: TSocket: str: String): begin TempStr:= str+#13+#10: CopyMemory(@sRecvBuff. PCharCTempStr). Length(TempStr)); send(s. sRecvBuff. Length(TempStr). 0); end; procedure TClientThread.Execute: var Buff: array of char: iPort: Integer: sRequest. sHost: String: server_addr: sockaddMn: продолжение &

Листинг 5.11 (продолжение) sock_server- TSocket: iMode. iSize: Integer-rfds: TFDSET. begin //////////////////////////// // Считывание заголовка //////////////////////////// RecvCstClient. Buff. 1024. 0):

SRequest:= String(Buff).

// Нет заголовка if sRequest = "" then begin CIoseSocket(stCl i ent). exit, end:

////////////////////////////

// Определяем адрес сервера и порта

//////////////////////////// sHost:= Copy (sRequest. PosCHost: ". sRequest). 255): Delete(sHost. Pos(#13. sHost), 255); Delete(sHost. 1, 6); iPort:= St rToIntDef(Copy (sHost. PosC:". sHost)+l. 255). 80): Delete(sHost. PosC:". sHost). 255):

// Если не найден host, то ошибка

If sHost = "" then. begin SendStr(stClient. "HTTP/1.0 400 Invalid header received from browser"); CIoseSocket(stCli ent); exit: end;

// Если есть внешний "проксик", то перенаправляем на него

If sExtProxyAddr<>" then begin iPort:= iExtProxyPort; sHost:= SExtProxyAddr; end:

sock_server-:= socket(AF_INET. S0CK_STREAM. 0): // Ищем прокси-сервер

Server_addr.sin_addr.s_addr:= htonl(INADDR_ANY): server_addr sin_family:= AF_INET: server_addr.sin_port .= htons(iPort): server_addr.sin_addr:= LookupName(sHost); 1

// Соединение с сервером

If connect(sock_server. server_addr. sizeof(server_addr)) = SOCKETJRROR then begin SendStr(stClient. "404 Host Not Found"); exit; end; iMode:= 1: setsockopt(sock_server. IPPR0T0_TCP. TCPJODELAY. @iMode. sizeof (integer)).

// Перенаправляем запрос серверу или другому "проксику" send(sock_server. buff, strlen(buff).0):

// Теперь работаем посредником между клиентом и сервером. // передавая запрошенные данные while true do begin // Добавляем сокеты в набор для ожидания FD_ZERO(rfds): FD_SET(stClient, rfds): FD_SET(sock_server. rfds); if (select(0. Orfds. nil. nil. ml) < 0) then exit; // Если пришел запрос от клиента. // то перенаправляем серверу if (FD_ISSET(stClient. rfds)) then begin iSize = recv(stClient. buff, sizeof(buff). 0); if iSize=-l then break; Send(sock_server. buff. iSize. 0); continue: end:

// Если пришли данные от сервера.

// то перенаправляем клиенту

If (FD_ISSET(sock_server, rfds)) then begin iSize:= recv(sock_server, buff. sizeof(buff). 0):

// Сервер уже все выслал if iSize = 0 then exit:

Листинг 5.11 (продолжение) SencKstClient. buff. iSize. 0): continue:

End; end: CloseSocket(stClі ent): CloseSocket(sock_server): end: end.

Для прокси-сервера в потоке TClientThread спрятано самое интересное, и сейчас мы это подробно рассмотрим. Единственное, что упущено в этом листинге, - уже знакомая нам функция LookupName.

Итак, когда клиент подключился к прокси-серверу, он посылает стандартный HTTP-запрос на получение какого-либо файла. Мы считываем этот заголовок с помощью функции recv. Заголовок выглядит следующим образом:

GET http://VAAo.vr-onl1ne.rU/HTTP/l.0 Accept: image/gif. image/x-xbitmap. image/jpeg. */* Accept-Language: ru User-Agent: Mozilla/4.0 (compatible: MSIE 6.0: windows NT 5.2: .NET CLR 1.1.4322) Host: www.vr-online.ru Proxy-Connection- Keep-Alive

Пока не будем вникать в суть запроса и содержащихся здесь команд, для нас сейчас главное - это строка host. В ней находится адрес сервера, с которого нужно получить данные и вернуть клиенту. В данном случае это www.vr-onlin.ru. Адрес известен, осталось выяснить порт. По умолчанию веб-серверы работают на порте 80, но если не так, то адрес веб-сервера будет указан следующим образом: www.vr-online.ru:Port. После двоеточия указывается номер порта, и мы должны учитывать этот нюанс.

Итак, получив заголовок, начинаем выбирать из него имя хоста:

SHost:= Copy(sRequest, Pos("Host: ". sRequest). 255): Delete(sHost. Pos(#13. sHost). 255); Delete(sHost. 1. 6);

Теперь отделяем номер порта, если он указан:

IPort:= StrToIntDef(Copy(sHost. PosC:". sHost)+l. 255). 80); Delete(sHost. PosC:". sHost), 255):

Если порт не указан, то функция StrToIntDef выдаст ошибку и возвратит значение, указанное по умолчанию, то есть 80.

Обязательно проверяем: если переменная sHost после разбора заголовка равна пустой строке, то адрес сервера не указан или указан неверно. В этом случае мы должны вернуть ошибку. Это можно сделать следующим образом:

SendStr(stClі ent. "HTTP/1.0 400 Invalid header received from browser");

После отправки ошибки закрываем сокет и выходим из потока.

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

В принципе, если есть внешний прокси-сервер, то не было смысла определять адрес сервера. Но я делаю это в любом случае и вам советую, потому что в будущем может понадобиться переадресация. Например, если пользователь запрашивает страницу с сайта www.sex.ru, то наш прокси-сервер определит это и сможет переадресовать запрос на другой сервер. Для этого достаточно поменять значение переменной sHost и немного подкорректировать запрос, который поступил от клиента.

Определив нужные параметры, создаем новый сокет, с помощью которого будет происходить связь с внешним сервером (независимо от того, другой ли это прокси-сервер или непосредственно веб-сервер).

Создав новый сокет и подключившись к серверу, мы сразу же переводим его в асинхронный режим таким образом:

IMode:= 1: setsockopt(sock_server. IPPROTOJCP. TCP_NODELAY. OiMode. sіzeof(integer)):

Функция setsockopt в данном случае схожа по своему назначению с іoctl socket, рассмотренной нами в главе 4. Она переводит сокет в более быстрый режим работы, который позволяет не ожидать и не накапливать данные, а сразу же принимать и пересылать их. Таким образом мы минимизируем задержки, а накапливанием занимается сервер или клиент.

После перевода сокета в нужный режим перенаправляем веб-серверу (или следующему прокси-серверу) запрос от клиента и запускаем бесконечный цикл. Этот цикл и будет посредником. Здесь ожидаются данные от клиента и сервера и пересылаются друг другу. Если пришли пустые данные, то это значит, что соединение завершено, и цикл прерывается. Все открытые сокеты при выходе из процедуры закрываются.

Как видите, прокси-сервер - это всего лишь посредник, который пересылает пакеты между клиентом и сервером. Попробуйте добавить возможность просмотра того, что пересылается между клиентом и сервером, и вы увидите, что на запрос клиента, сервер передает только текстовое содержимое документа. После этого браузер разбирает полученный документ, и если находит картинки или другую дополнительную информацию (звуковые файлы, flash-ролики и т. д.), то идет дополнительный запрос на получение этих данных. Таким образом, браузер получает только те данные, которые ему нужны, и может экономить трафик.

Хочу также обратить ваше внимание на то, что в качестве номеров портов в исходном коде по умолчанию установлено значение 8080. Это связано с тем, что моя сеть настроена через прокси-сервер. Если вы используете DialUp, то в качестве порта внешнего "проксика" и адреса нужно указать пустые строки.

Для тестирования примера запустите нашу программу и сервер. Затем откройте Internet Explorer (или другой браузер) и настройте его на использование прокси-сервера. Для этого выполните команду меню Сервис Свойства обозревателя, и в появившемся диалоговом окне (рис. 5.10) перейдите на вкладку Подключение.

Рис. 5.10. Настройка браузера

Нажмите кнопку Настройка сети, и перед вами откроется новое диалоговое окно (рис. 5.11).


Рис. 5.11. Настройка прокси-сервера

В области Прокси-сервер установите флажок Использовать прокси-сервер и укажите адрес и порт. Если вы запускаете сервер на своем локальном компьютере, то можно указать 127.0.0.1, но я рекомендую указать реальный адрес, чтобы пример точно работал.

ПРИМЕЧАНИЕ ---1Исходный код рассмотренного здесь примера находится на компакт-диске в каталоге 5оигсе5\сп05\Н"ГТРРгоху.

Если вам нужен прокси, то ниже вы найдёте, по моему мнению, лучший способ создания прокси. Для чего нужен прокси-сервер? Очень просто, вот несколько возможных ответов на этот вопрос:

1. Представьте, что вы сидите в отеле или в кафе с бесплатным WiFi. Где гарантия, что WiFi не развёрнут мошенниками, которые ждут, пока какой-нибудь лох начнёт передавать через WiFi данные своей банковской карты или вводить логины и пароли к своим личным страницам. Здесь есть два пути, либо не пользоваться бесплатным WiFi для работы и покупок, либо пользоваться прокси, с помощью которого данные будут передаваться в зашифрованном виде.

2. Сокрытие своего настоящего IP-адреса. Иногда это бывает нужно для соблюдения анонимности.

3. Вы получили бан поисковой системы из-за частого обращения. Например, если Яндекс часто спрашивает, робот вы или человек.

Существует 2 варианта найти прокси-сервер: найти услугу (платную или бесплатную) или создать собственный прокси-сервер. Здесь не будем рассматривать первый вариант, т.к. нет гарантии, что на сервере не пишется лог (вероятность потери личных данных, данные банковских карт, логины и пароли). Ниже рассмотрим второй вариант: создание своего прокси-сервера.

1. Находим хостинг с поддержкой SSH

Если вы веб-мастер, то, возможно, у вас уже есть хостинг с поддержкой SSH. Если нет, то поищите в Интернете недорогой хостинг поддерживающий SSH. Встречаются хостинг-провайдеры, которые готовы предложить нужный нам хостинг за примерно за 1 доллар в месяц. Можно найти и заграничный хостинг, но это будет чуть дороже. Если поискать получше, то можно найти бесплатные варианты, но, думаю, платные будут работать надёжнее.

2. Запускаем программу PuTTY

После того как вы обзавелись хостингом с SSH, вам нужна программа PuTTY для создания локального прокси-сервера. Скачать программу бесплатно можно с официального сайта программы: www.putty.org .

3. Настраиваем программу PuTTY

После запуска программы вы увидите окно с настройками. В поле Host Name введите адрес домена или IP-адрес вашего сервера. В поле Port укажите порт, обычно это 22.

Теперь перейдите в категорию Connection->SSH->Tunnels. Здесь нужно добавить порт. Для этого в поле Source port введите порт для будущего локального прокси-сервера, например, 8888. Выберите опцию Dinamic и нажмите на кнопку Add. После этого порт появится в поле Forwarded ports - строка D8888.

Чтобы при каждом запуске не делать эту длительную процедуру, нужно сохранить текущие настройки. Для этого вернитесь в категорию Session, введите имя для своих настроек в поле Saved Sessions, например, "myhost.ru proxy" и нажмите на кнопку Save. После этого ваши настройки появятся в списке ниже. Теперь, при следующем запуске программы, вы сможете выбрать свои настройки в этом списке и нажать на кнопку Load.

4. Открываем сессию

После настройки программы можно открыть сессию. При этом будет создан локальный прокси-сервер. Для этого щёлкаем по кнопке Open.

Если вы подключаетесь к серверу первый раз, то программа PuTTY оповестит вас о том, что у неё нет информации об этом сервере. Настоятельно рекомендую первый раз подключаться к вашему серверу через надёжную известную сеть, в этом случае нажмите на кнопку Да. Если вы увидите такое сообщение при подключении через неизвестную бесплатную точку доступа, лучше не продолжать подключение и нажать кнопку Отмена.



5. Прокси-сервер готов!

После того как вы ввели логин и пароль, на экране появится информация о сервере, а ваш прокси будет доступен по адресу 127.0.0.1:8888 или localhost:8888. По окончании работы чёрное окно программы PuTTY можно закрыть, согласившись с предупреждением.

6. Настройка браузера и других программ

Чтобы воспользоваться созданным локальным прокси-сервером в браузере, нужно настроить подключение через SOCKS5 прокси-сервер, указав настройки 127.0.0.1:8888 или localhost:8888 . Другие программы настраиваются аналогичным образом. Для примера рассмотрим настройку браузера Internet Explorer 10.

В меню выберите пункт "Свойства браузера".


В появившемся окне выберите закладку "Подключения" и на ней нажмите на кнопку "Настройка сети".

В окне "Настройка параметров локальной сети" поставьте галку "Использовать прокси-сервер..." (в дальнейшем, чтобы быстро включать и выключать прокси, можно просто снимать или устанавливать эту галку ) и нажмите на кнопку "Дополнительно".

В окне "Параметры прокси-сервера" укажите только пункт 4. Остальные поля очистите, чтобы браузер не путался.

Теперь закройте все окна, нажимая на кнопки "ОК". Ваш браузер готов к работе через прокси.

7. Проверка

Чтобы проверить и удостовериться, что вы и в самом деле выходите в интернет через сервер, перейдите в вашем браузере на страницу одного из сервисов, которые определяют ваш IP-адрес. Например, internet.yandex.ru или более подробный сервис 2IP . Сравните IP-адрес с выключенным и включенным прокси-сервером.

Нужен прокси? Где же его взять, не редко возникает такая необходимость. Пользователи интернета не редко и в повседневной работе замечают это. Для чего же может понадобиться скрытие ip адреса:

Соблюдение вашей анонимности. (Бывает полезным, если вы используете интернет для определённых отраслей бизнеса).

Парсируя поисковую систему вы получили бан. Например, “Вы робот, частый вопрос поисковой системы Яндекса?”. Или Rapidshara.com мешает спокойно пользоваться её услугами.

Вот несколько вариантов найти прокси (socks) сервера : сделать его покупку, самостоятельно парсировать сервер, или самим создать. Первые 2 варианта не особо подходят, т.к. покупая прокси, мы не знаем пишется ли логин(так же можно потерять свои личные данные, icq или почту).

Прокси которые находятся в открытом доступе – public, держаться как правило не более суток. Так что думаю, 3 вариант более предпочтителен, а точнее, просто создадим свой сервер и бесплатно. Для того, что бы выполнить эту задачу, нужно выполнить несколько не сложных шагов.

1) Открываем удобную для вас поисковую систему, и ищем хостинг с поддержкой ssh – не дорогой. В русском сегменте легко найдёте, около десятка хостеров, которые всего за 1 доллар продадут хостинг с поддержкой ssh. Заграничный ip адрес, обойдётся дороже около $5 в месяц. Но если нужна совсем халява, то существует множество хостингов, которые вам предоставят тестовый вариант бесплатно. Необходимо просто хорошо поискать.

2) В итоге у вас есть аккаунт с ssh, пока забываем про него. Для дальнейшего шага нам потребуется несколько софта для работы с ssh. Если вы пользовались когда-нибудь командной строкой в системах nix, знаете о putty, если же не встречались, то это не страшно, просто скачиваем программу.

3) Запускаем putty и выполняем настройку для нашего сервера: В HostName вводим IP адрес вашего сервера, или домена. В поле Port - обычно 21, он по умолчанию используется для ssh. На вкладке Connection -> Ssh -> Tunnels, (Add new forwarded port) - нужно добавить новый порт (. Source Port выбираем порт который у нас на компе будет использовать прокси. Dynamic нужно выбрать обяхзательно и кликаем по кнопке add. В итоге в Forwarded Port вы должны увидеть запись D81.

4) Ищем и кликаем по кнопке open. В чёрном окошке для начала вводим ваши логин, после разумеется пароль(если при процессе ввода пароль ничего не полявиться, то это нормально).

5) Ну в принципе готово – прокси по адресу 127.0.0.1:81 ваш. Можете пожинать плоды вашей работы. Причём способ если не во всех случаях бесплатен, то как минимум всегда экономичен.

Да и ещё – как только откроете ssh сессию, в настройках прокси браузера, нужно занести localhost (127.0.0.1) и порт и не в HTTP-Proxy а именно в SOCKS5.

Лучшие статьи по теме