eXeL@B —› Основной форум —› Ускорение таймеров в браузере |
Посл.ответ | Сообщение |
|
Создано: 08 сентября 2011 22:02 · Личное сообщение · #1 Всем здрасте. Недавно захотел рещить одну распространённую проблему - проблему таймеров при ожидании ссылки для загрузки какого-либо файла. Т.е. (для людей не в теме) пытаетесь вы скачать с какого-то сервиса типа депозита, турбобита и многих других какой-то файл. Но перед началом загрузки выскакивает таймер, и приходится ждать 60 сек, а иногда и больше. Это ужасно раздражает. В инете видел множество скриптов по обходу этих таймеров, но меня интересует эта проблема, однако под другим ракурсом. Идея состоит в следующем. Так как ожидание выполняется браузером (браузер выполняет javascript, например), то от того, как это ожидание программно реализовано в браузере, зависит сколько на самом деле мы будем ждать. Т.е., к примеру, некий таймер по окончании интервала в 60 секунд вызывает TIMERPROC. Вполне реальный сценарий, по-моему. Так вот наша задача подправить реализацию этих вызовов, чтоб изменить интервал ожидания. Но! В теори всё кул, на практике перепробовал всё, что только можно: SetTimer KillTimer ZwOpenTimer ZwCreateTimer ZwSetTimer Sleep SleepEx ZwYieldExecution RtlCreateTimer RtlCreateTimerQueue GetTickCount CreateWaitableTimer QueryPerformanceCounter timeGetTime И ничего!Таймеры Internet Explorer не опираются на них! Блин, как так? Сомневаюсь, что используется какой-то недокументированный хитрожопый способ, может, кто что посоветует? ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 09 сентября 2011 00:46 · Поправил: Isaev · Личное сообщение · #2 Ну так делается это в опере например банально при помощи UserJS, подменой кода до начала исполнения, при чём тут API то При данной постановке задачи, оптимальный вариант... А при хуке API, просто для "ускорения" всех таймеров, можно на свою задницу много лишнего словить В частности тут: приятная вещь, облегчает жизнь. А по аналогии можно для нужного сервера дописать своё ----- z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh |
|
Создано: 09 сентября 2011 04:25 · Поправил: Skino · Личное сообщение · #3 |
|
Создано: 09 сентября 2011 05:55 · Личное сообщение · #4 |
|
Создано: 09 сентября 2011 09:34 · Личное сообщение · #5 |
|
Создано: 09 сентября 2011 10:19 · Личное сообщение · #6 Скрипты - это, конечно, прекрасно. Но вот проблема в том, что: для некоторых обменников, где пасут эти скрипты... А с API - паси, не паси - это будет работать. Единственная проблема, как сказал PE_Kill, это если время на сервере считается. Но тогда и скрипты не помогут. Поэтому сосредоточимся исключительно на сценарии, в котором отсчёт ведётся на стороне клиента. А при хуке API, просто для "ускорения" всех таймеров, можно на свою задницу много лишнего словить Ну, эт я догадываюсь. Поэтому буду хукать по-умному, тут сейчас главное - разобраться, как ведётся работа с этими таймерами на уровне исполняемого кода процессора, а не каких-то там скриптов. ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 09 сентября 2011 10:45 · Поправил: Zorn · Личное сообщение · #7 |
|
Создано: 09 сентября 2011 11:18 · Личное сообщение · #8 |
|
Создано: 09 сентября 2011 16:29 · Личное сообщение · #9 ARCHANGEL есть программа USD она качает с шаропомоек. Чем не устраивает? Меня не устраивало то, что плагин для letitbit реально ждал таймер, который как раз работает только на стороне клиента, я его выбросил и написал за 10 минут свой, который уже ничего не ждет. А так действительно атомная бомба. ----- Yann Tiersen best and do not fuck |
|
Создано: 09 сентября 2011 17:24 · Личное сообщение · #10 |
|
Создано: 09 сентября 2011 17:48 · Личное сообщение · #11 |
|
Создано: 10 сентября 2011 01:12 · Личное сообщение · #12 |
|
Создано: 10 сентября 2011 01:21 · Личное сообщение · #13 zeppe1in пишет: мне кажеца вопрос не про то как скачать, а как бравзер считает время) Именно! +100! Я, видимо, весьма туманно выразился, но как раз этот аспект меня интересует. вроде все нужные апи перечислены, может ARCHANGEL ошибся в хуке? Ну, смотрите. Всё, вроде бы, просто. Я перехожу по ссылке, например, на депозите. Потом жму скачать файл, выбираю "бесплатно", но перед тем, как браузер выполнит переход на страницу с таймером, ставлю бряк на интересующую меня функцию. Если он (бряк) не срабатывает, значит и говорить не о чем. Если срабатывает по сто раз в секунду (много раз, иными словами), то я патчу функцию (например, GetTickCount всегда возвращала 0 у меня в тестах), но таймер работает, и ничего не меняется. Такими способами я протестил все функции в списке. ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 10 сентября 2011 04:34 · Личное сообщение · #14 |
|
Создано: 10 сентября 2011 07:27 · Личное сообщение · #15 |
|
Создано: 10 сентября 2011 08:45 · Личное сообщение · #16 |
|
Создано: 10 сентября 2011 12:22 · Поправил: ARCHANGEL · Личное сообщение · #17 PE_Kill А если и флеш, то что это меняет? Вся флеша воспроизводится через флеш-плеер, который выполняется внутри браузера в своей отдельной DLL. Т.е. бряки в адресном пространстве должны бы срабатывать. По крайней мере, я так думаю, разве нет? Добавлено А, понятно ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 10 сентября 2011 13:05 · Личное сообщение · #18 |
|
Создано: 10 сентября 2011 14:41 · Личное сообщение · #19 ARCHANGEL пишет: А если и флеш, то что это меняет? Вся флеша воспроизводится через флеш-плеер, который выполняется внутри браузера в своей отдельной DLL. Т.е. бряки в адресном пространстве должны бы срабатывать. По крайней мере, я так думаю, разве нет? Многое это меняет. В Firefox например флэш плеер в отдельном процессе запускается - plugin_container по-моему. Многие браузеры для каждой вкладки отдельный процесс создают. Так что для начала надо определиться где хуки ставить. |
|
Создано: 12 сентября 2011 07:00 · Личное сообщение · #20 |
|
Создано: 12 сентября 2011 10:19 · Личное сообщение · #21 PE_Kill, cppasm Я не использую FireFox, как-то мне он не по душе. А вот в Internet Explorer нет песочницы для флеша. Но даже если б и была, то депозит не использует флеш. Имхо, если нажать на флеш во время воспроизведения правой кнопкой мыши, то появляется характерное меню, которое отсутствует на таймере депозита. Но я не силён в веб-технологиях, возможно, и во флеше можно убрать это меню? ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 12 сентября 2011 12:58 · Личное сообщение · #22 |
|
Создано: 12 сентября 2011 23:29 · Личное сообщение · #23 |
|
Создано: 13 сентября 2011 05:09 · Поправил: Zorn · Личное сообщение · #24 |
|
Создано: 17 сентября 2011 10:03 · Поправил: Runtime_err0r · Личное сообщение · #25 Несколько не в тему, но всё же: Есть такая прога - Proxomitron, работает, как локальный прокси-сервер, позволяет подменять содержимое сайтов до передачи их в браузер (я её пользую как фильтр для руборда ) Так вот, посмотрел я на letitbit, там в самом начале страницы идёт код: download_link = 'http://letitbit.net/download.php?uid=...............'; ajax_check_url = 'http://s9.letitbit.net/ajax/download3.php'; count = 0; seconds = 60; Я думаю, что если в Proxomitron'е cсоздать правило менять seconds = 60 на seconds = 1 то будет всё OK P.S. А вот более в тему: http://msdn.microsoft.com/en-us/library/aa741307(v=vs.85).aspx#The_MSHTML_Timer_API http://msdn.microsoft.com/en-us/library/aa741299(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/aa741297(v=vs.85).aspx |
|
Создано: 17 сентября 2011 18:36 · Личное сообщение · #26 Ну давайте подумаем. Что происходит во время ожидания таймаута - очевидно можно разделить потоки на паразитные, которые не имеют отношения к ожиданию и полезные, которые выполняют синхронизацию. Их можно разделить по сисколом, стеку етц. Потоки выполняющие синхронизацию с точки зрения тс выполняют полезную работу, остальные можно остановить(скорее всего при этом не будет никаких дедлоков). Остальные помимо синхронизации выполняют всякую иную работу - чтото передают в сеть, аптейтят контексты окон етц. По этим событиям можно найти нужные треды. А дальше примитивно - колстек и брейки. ARCHANGEL Разве вы никогда не реверсили софт ? |
eXeL@B —› Основной форум —› Ускорение таймеров в браузере |