Просмотр буффера InternetReadFile

Тема в разделе "WASM.NETWORKS", создана пользователем Quark, 15 сен 2007.

  1. Quark

    Quark New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2007
    Сообщения:
    211
    Прохучил эту апишку в iexplore. начал логировать трафик.

    Прикол в том, что чтение данных со страницы идёт каким-то идиотским образом. Считывается не вся страница целиком, в по носколько байт... причём всегда по-разному. может считаться 400 байт, а может 20. вот у меня возник вопрос: с чем это связано?
     
  2. agent007

    agent007 New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    166
    асинхронный режим работы + кэширование. если все учтешь - сделаешь нормальный логер ;)
     
  3. Quark

    Quark New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2007
    Сообщения:
    211
    Хм.. Дело не в асинхронном режиме.. данные приходят по-порядку. и это меня вполне устраивает. проблемма в другом. допустим, мне нужно найти на странице некоторые данные. получается что эти данные вообще могут быть разорваны и найти их обычным сканированием буффера невозможно. тем более что я заранее не знаю каким образом они разорваны.. нужно придумывать что-то другое... это либо перехватывать не InternetReadFile, а подниматься выше (как я понимаю, должен существовать общий буффер, в котором хранится страница), либо сканировать буффер каким-нибудь хитрым образом...
     
  4. agent007

    agent007 New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    166
    > Хм.. Дело не в асинхронном режиме.. данные приходят по-порядку
    ну значит скоро на грабли наступишь ....

    То что данные по кускам идут, это логично :) Придется писать некий эмулятор, чтобы собрать все данные в одну посуду а потом их анализировать...
     
  5. Agent_Smit

    Agent_Smit New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    60
    Как-то перехватывал InternetReadFile. Скачивал все в свой буфер, с ним уже работал, потом отдавал по назначению, эмулируя InternetReadFile, InternetQueryDataAvailable. Работало все через ж... При плохом коннекте и больших страницах браузер вобще подвисал.
    Также надо помнить о InternetReadFileExA, InternetReadFileExW.

    Вопрос к знающим людям, как это правильно реализовать?

    Да, еще вспомнил, некоторые серверы поддерживают gzip сжатие контента, тут вообще ничего не посканируешь...
     
  6. planet

    planet New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2007
    Сообщения:
    108
    Почему? Просто нужно сказать серверу что браузер не понимает gzip или динамически распаковывать и ... но помоему первый способ проще.
     
  7. Quark

    Quark New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2007
    Сообщения:
    211
    Вобщем есть идея перехватывать трафик не на InternetReadFile, а на функциях обработки буффера. то есть когда уже браузер преобразует буффер в html страницу и показывает на экран... эксплорер, вроде, даже специальную библиотеку юзает для преобразования html кода... по идее трафик можно перехватывать именнго здесь, если я не ошибаюсь. Какие есть идеи по этому поводу?
     
  8. agent007

    agent007 New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    166
    ну реализовывай) в чем проблема:)
     
  9. Agent_Smit

    Agent_Smit New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    60
    Распаковывать/запаковывать это shit. А вот правка заголовка это можно, если не ошибаюсь, Accept Types передается в HttpOpenRequestA.

    Мысль.

    Если надо просто наблюдать контент, то можно и InternetReadFile складывать куски в буфер. Если надо найти определенную подстроку, то можно искат по кускам, с учетом, что она может быть разорвана. Т.е. искать подстроку в одном куске, потом остаток куска, который меньше подстроки запомнить, и поиск в следующем куске начинать с этого остатка.
    При необходимости вставить свои данные и скорректировать размер для InternetReadFile и InternetQueryDataAvailable.
     
  10. Quark

    Quark New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2007
    Сообщения:
    211
    Это действие в лоб. То, что первое приходит в голову. В принципе идея не плохая, но отлаживать всё это... Во-первых одна и та-же страница может быть открыта несколько раз. Во-вторых мы конечно же рассчитываем на то, что данные со страницы идут по порядку. В-третьих меня смущает здесь большое количество глобальных переменных. А самое главное - мало того, что эти данные нужно найти, их ещё нужно и подменить... получается что мы телегу ставим впереди лошади..
     
  11. Agent_Smit

    Agent_Smit New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    60
    И что с того?

    А они могут еще идти не по порядку? Я такого ни разу не наблюдал. Сервер ведь отдает контент по порядку, значит и InternetReadFile должен также отдавать.

    Просто у меня стояла задача вставить данные не изменяя исходных, после заданной подстроки.

    Как у тебя там с обработкой буфера выше InternetReadFile?