получить урл в ап Фаирфокса

Тема в разделе "WASM.WIN32", создана пользователем jsean, 4 янв 2010.

  1. jsean

    jsean New Member

    Публикаций:
    0
    Регистрация:
    4 янв 2010
    Сообщения:
    1
    Рассмотрим следующую ситуацию:

    Юзер заходит на 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, т.е. судя по всему в момент ответа от сервера получаются данные о урл..

    Подскажите пожалуйста куда копать чтобы найти то место откуда фф получает урл. Заранее благодарю!
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    "Location: http://www.move.com" - ни о чём не говорит?
     
  3. fuckinff

    fuckinff New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2009
    Сообщения:
    32
    n0name
    данные берутся не отсюда, вчитайся

    send вообще сторонняя функция по отношению к фф, но подменяя данные в запросе отправляемом соответствующим образом изменяется и урл в поле урла, отсюда делаем вывод: УРЛ откуда идет скачивание вычисляется какимто другим способом

    ps у меня та же проблема, нужно скртыно серфить в фф и никак не получается добиться нужного результата
     
  4. fuckinff

    fuckinff New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2009
    Сообщения:
    32
    вот смотри что я делал:

    - захожу на yandex.ru/
    - вызывается указанный ниже код и отображается страница yandex.ru/yandsearch?text=mozgotraxx + в поле урла также отображается http://yandex.ru/yandsearch?text=mozgotraxx ! а это не гуд(

    Код (Text):
    1. int __stdcall new_send (IN SOCKET s, IN const char *buf, IN int len, IN int flags)
    2. {
    3.     if (buf && StrStrIA(buf, "Host: yandex.ru") && StrStrIA(buf, "GET / "))
    4.     {
    5.         CHAR *BUF = (CHAR *) MemAlloc(lstrlenA(buf) + 1280); // выделяем буффер нужного размера
    6.         lstrcpyA(BUF, buf);
    7.         ReplaceString(BUF, "GET /", "GET /yandsearch?text=mozgotraxx", 10); // подменяем запрос
    8.         int result = old_send (s, BUF, lstrlenA(BUF), flags);
    9.         MemFree(BUF); // освобождаем память
    10.         return result == 0 ? 0 : len; // возвращаем результат - типа было отослано скока было в ориг запросе байтофф
    11.     }
    12.  
    13.     return old_send(s, buf, len, flags);
    14. }
    давай думать вместе че делать))
     
  5. fuckinff

    fuckinff New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2009
    Сообщения:
    32
    + хук send не поможет с хттпс! хучил аналогичным образом PR_Write - тот же результат. в общем нужно понять как фф получает инфу об урле
     
  6. fuckinff

    fuckinff New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2009
    Сообщения:
    32
    ща перелопатил исходники фф вместе с документацией пришел к выводу, что докопаться до поля урла можно 2мя способами:
    1. xpcom
    2. чезез shell-функции мозиллы (LoadURI()/OnLinkClick())
    https://developer.mozilla.org/en/Document_Loading_-_From_Load_Start_to_Finding_a_Handler

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

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    fuckinffjsean Почитайте про PHP и про скрипты... PHP выполняется на стороне сервера и посылает инфу браузеру. Браузер совершенно не при чем тут, надо ручками обрабатывать протокол обмена, раз уж браузер не может перехватить... Этот вопрос про войну броня/оружие. Народ извращается придумывая защиту от "прямого перехвата ссылок" в браузерах, а другой народ "копает"... Развели детский сад - в новички вам надо.
     
  8. dag

    dag New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2004
    Сообщения:
    446
    для HTTP/1.1
    Твой запрос клиента
    Код (Text):
    1. GET / HTTP/1.1
    2. Accept: */*
    3. Accept-Language: неважно
    4. User-Agent: неважно
    5. Host: yandex.ru
    6. Cookie: yandexuid=бла-бла-бла
    Твой измененный запрос
    Код (Text):
    1. GET /yandsearch?text=mozgotraxx HTTP/1.1
    2. Accept: */*
    3. Accept-Language: неважно
    4. User-Agent: неважно
    5. Host: yandex.ru
    6. Cookie: yandexuid=бла-бла-бла
    Ответ тебе сервера
    Код (Text):
    1. HTTP/1.1 302 Found
    2. Date: Wed, 06 Jan 2010 19:51:13 GMT
    3. Server: Apache/2.2.9 (Unix) mod_perl/2.0.4 Perl/v5.8.8
    4. Cache-Control: private
    5. [b]Location: /yandsearch?text=mozgotraxx&lr=213[/b]
    6. Vary: Accept-Encoding
    7. Content-Encoding: gzip
    8. Connection: close
    9. Transfer-Encoding: chunked
    10. Content-Type: text/plain
    Если ты не хочешь видеть "/yandsearch?text=mozgotraxx&lr=213", подменяй ответы приходящие от сервера (HTTP заголовки + то что может придти в теле ответа) или хакай функции вывода URL в самом браузере. В случае подмены ответа придётся реализовать практически свой браузер (ту часть которая занимается обработкой HTTP протокола и разбором HTMLа и скриптов)
     
  9. dag

    dag New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2004
    Сообщения:
    446
    P.S.
    Забыл сказать:
    Подменив "Location: /yandsearch?text=mozgotraxx&lr=213" и заменив "HTTP/1.1 302" ты обязан послать запрос серверу и получить тело которое лежит на "/yandsearch?text=mozgotraxx&lr=213" и его уже отдать клиенту иначе будет фигня ...