kadvanimayur Ответов: 4

как перенаправить url-адрес в c++/cli


я хочу сделать небольшое приложение, которое будет перенаправлять конкретный url-адрес на другой url-адрес, когда мое приложение работает на этом компьютере..
е.г
если я наберу http://www.yahoo.com
затем браузер должен перейти к http://www.google.com-да.
я нахожу много, но не получаю подходящего ответа.
vc++.net и vc++ оба предложения приветствуются...

4 Ответов

Рейтинг:
5

kadvanimayur

я получил NtTdiapi, чтобы получить доступ на системном уровне и заблокировать запрос на самом компьютере и перенаправить этот запрос..


Ashish Tyagi 40

Ладно, ну удачи вам с этим, но почему вы отменяете принятый ответ? В любом случае я всего наилучшего для вас учусь. ;-)

Рейтинг:
23

Ashish Tyagi 40

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

Это очень простая функциональность стандартного брандмауэра...

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

Для перенаправления есть заголовок в спецификации HTTP под названием LOCATION вам нужно установить этот заголовок по вашему желаемому сайту перенаправления например "www.codeproject.com-в твоем ответе.

В противном случае вы можете использовать meta redirect. (Это более простой способ...)



<title>заголовок вашей страницы


Необязательный текст страницы здесь.
этот сайт заблокирован и вы перенаправляетесь на него codeproject.com




Здесь 5 указывает, сколько секунд вы хотите подождать перед перенаправлением, тем временем вы можете показать сообщение о том, что этот сайт заблокирован и вы перенаправляетесь на codeproject.com


Удачи Подмигивание | ;-)


kadvanimayur

На самом деле я не слишком много experianced...so можете ли вы дать мне пример кода брандмауэра?
и кстати, спасибо тебе..

Ashish Tyagi 40

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

Сначала ответьте, а потом я расскажу вам, как работает веб-браузер, как сделать http-прокси и брандмауэр..

kadvanimayur

йа. я также работал с программированием сокетов и многопоточностью.. но я не знаю, как работать с интернетом..

Ashish Tyagi 40

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

Рейтинг:
2

Ashish Tyagi 40

Ладно все что тебе нужно-
1. настройте веб-браузер для подключения к интернету через вашу программу. Если вы используете Internet Explorer, то Гото инструменты интернет возможность подключения по локальной сети настройки галочку "Использовать прокси-сервер для подключений LAN и поставь 127.0.0.1; вместо адреса: и 8080 (или что угодно), а порта нет. После этого, когда вы нажмете на любую ссылку или перейдете по любому адресу, Ваш браузер попытается установить соединение по IP:Порту, который вы настроили.
2. Создайте серверный сокет и начните прослушивать порт 8080 (или то, что вы когда-либо настроили). Примите подключение из веб-браузера и считайте все данные из клиентского сокета (это данные, отправленные веб-браузером), теперь у вас есть HTTP-запрос. для чтения этого 4k буфера вполне достаточно.
3. Теперь разберем этот запрос и получим значение заголовка HOST: он должен выглядеть так: "Host: www.google.co.in" (прочитайте спецификацию HTTP для формата HTTP - запроса). Подсказка для того, чтобы разобрать его искать индекс ;узел" или "узел" или "узел:" и копировать данные, начиная от хозяина и до "\р\н". Обрежьте содержимое.
И вот вы получили желаемое имя хоста.
4. Теперь у вас есть 2 случая
О. Это имя хоста находится в вашем списке блокировки.
Что делать :-Возьмите эти строки в буфер

<html><br />
<head><br />
<title>Your Page Title</title><br />
<meta http-equiv="REFRESH" content="5;url=http://www.codeproject.com"></meta></head><br />
<body><br />
Optional page text here.<br />
This site is blocked and you are redirecting to<br />
www.codeproject.com in 5 seconds<br />
</body><br />
</html>


и запишите этот буфер в клиентский сокет (сокет для браузера). Теперь браузер перенаправит страницу на www.codeproject.com через 5 секунд.

B. Это имя хоста находится в вашем списке блокировки.
Что делать :- создайте клиентский TCP-сокет, подключитесь к хосту, который вы только что проанализировали, напишите на него HTTP-запрос и прочтите ответ. теперь напишите этот ответ в сокет для веб-браузера, и браузер отобразит страницу.



Если вы нашли какие либо трудности в понимании или реализации этого не стесняйтесь спрашивать и как только вы напишете базовую программу тогда я расскажу вам о некоторых связанных с дизайном оптимизациях


Рейтинг:
0

Prerak Patel

Проверьте эту ссылку
http://stackoverflow.com/questions/2214053/c-redirect-outgoing-connections[^]


Ashish Tyagi 40

хорошее звено, мой 5-й