Рассмотрим следующую ситуацию: Юзер заходит на move.com, и получает в ответ: HTTP/1.1 302 Moved Temporary Location: http://www.move.com фаирфокс автоматом редиректит страницу на новый Location, и в какойто момент меняет урл в поле адреса с введенного юзером move.com на http://www.move.com Подскажите пожалуйста где хранится урл для подмены, откуда фф берет эти данные? из хедеров запроса? или может в момент посылки запроса кудато заносятся данные? или в ответе содержится какаято информация по этому? Смотрел исходники фф, там вообще ничего невозможно понять) Перехватывал send из ws2_32.dll и пытался там подменять данные в запросе (GET / на GET /afx.php) и в поле адреса получал http://addr.com/afx.php, т.е. судя по всему в момент ответа от сервера получаются данные о урл.. Подскажите пожалуйста куда копать чтобы найти то место откуда фф получает урл. Заранее благодарю!
n0name данные берутся не отсюда, вчитайся send вообще сторонняя функция по отношению к фф, но подменяя данные в запросе отправляемом соответствующим образом изменяется и урл в поле урла, отсюда делаем вывод: УРЛ откуда идет скачивание вычисляется какимто другим способом ps у меня та же проблема, нужно скртыно серфить в фф и никак не получается добиться нужного результата
вот смотри что я делал: - захожу на yandex.ru/ - вызывается указанный ниже код и отображается страница yandex.ru/yandsearch?text=mozgotraxx + в поле урла также отображается http://yandex.ru/yandsearch?text=mozgotraxx ! а это не гуд( Код (Text): int __stdcall new_send (IN SOCKET s, IN const char *buf, IN int len, IN int flags) { if (buf && StrStrIA(buf, "Host: yandex.ru") && StrStrIA(buf, "GET / ")) { CHAR *BUF = (CHAR *) MemAlloc(lstrlenA(buf) + 1280); // выделяем буффер нужного размера lstrcpyA(BUF, buf); ReplaceString(BUF, "GET /", "GET /yandsearch?text=mozgotraxx", 10); // подменяем запрос int result = old_send (s, BUF, lstrlenA(BUF), flags); MemFree(BUF); // освобождаем память return result == 0 ? 0 : len; // возвращаем результат - типа было отослано скока было в ориг запросе байтофф } return old_send(s, buf, len, flags); } давай думать вместе че делать))
+ хук send не поможет с хттпс! хучил аналогичным образом PR_Write - тот же результат. в общем нужно понять как фф получает инфу об урле
ща перелопатил исходники фф вместе с документацией пришел к выводу, что докопаться до поля урла можно 2мя способами: 1. xpcom 2. чезез shell-функции мозиллы (LoadURI()/OnLinkClick()) https://developer.mozilla.org/en/Document_Loading_-_From_Load_Start_to_Finding_a_Handler с первым я никогда не работал, а вторые проблематично вызвать, т.к. они находятся в самом ехе, а не во внешней длл( ну ведь есть способ реализовать это! помогите!!!)
fuckinffjsean Почитайте про PHP и про скрипты... PHP выполняется на стороне сервера и посылает инфу браузеру. Браузер совершенно не при чем тут, надо ручками обрабатывать протокол обмена, раз уж браузер не может перехватить... Этот вопрос про войну броня/оружие. Народ извращается придумывая защиту от "прямого перехвата ссылок" в браузерах, а другой народ "копает"... Развели детский сад - в новички вам надо.
для HTTP/1.1 Твой запрос клиента Код (Text): GET / HTTP/1.1 Accept: */* Accept-Language: неважно User-Agent: неважно Host: yandex.ru Cookie: yandexuid=бла-бла-бла Твой измененный запрос Код (Text): GET /yandsearch?text=mozgotraxx HTTP/1.1 Accept: */* Accept-Language: неважно User-Agent: неважно Host: yandex.ru Cookie: yandexuid=бла-бла-бла Ответ тебе сервера Код (Text): HTTP/1.1 302 Found Date: Wed, 06 Jan 2010 19:51:13 GMT Server: Apache/2.2.9 (Unix) mod_perl/2.0.4 Perl/v5.8.8 Cache-Control: private [b]Location: /yandsearch?text=mozgotraxx&lr=213[/b] Vary: Accept-Encoding Content-Encoding: gzip Connection: close Transfer-Encoding: chunked Content-Type: text/plain Если ты не хочешь видеть "/yandsearch?text=mozgotraxx&lr=213", подменяй ответы приходящие от сервера (HTTP заголовки + то что может придти в теле ответа) или хакай функции вывода URL в самом браузере. В случае подмены ответа придётся реализовать практически свой браузер (ту часть которая занимается обработкой HTTP протокола и разбором HTMLа и скриптов)
P.S. Забыл сказать: Подменив "Location: /yandsearch?text=mozgotraxx&lr=213" и заменив "HTTP/1.1 302" ты обязан послать запрос серверу и получить тело которое лежит на "/yandsearch?text=mozgotraxx&lr=213" и его уже отдать клиенту иначе будет фигня ...