информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsПортрет посетителяСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Ограничивает ли библиотека Wininet проходящий через неё трафик? 20.09.09 13:32  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
Отредактировано 20.09.09 13:33  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
Есть сервер с каналом доступа в интернет 100 mbit. Пишу программу, которая загружает контент с разных страниц. Программа пользуется услугами библиотеки WinInet. Для ускорения обработки контента я создаю сразу несколько потоков, которые получают данные из Интернет.

Вот только прироста в скорости это не даёт: что 20 потоков используют только 2.5 mbit от всего трафика, что 200, что 1000, но при этом все потоки создаются и все в интернет стучатся. А если запустить 2 копии программы, то используется уже 5 mbit трафика.

Как такое объяснить? Библиотека Wininet накладывает ограничение на используемый трафик? Систему программа практически не грузит. В диспетчере задач "Бездействие системы" не опускается ниже 90%.
Вопрос по-прежнему актуален. 22.09.09 08:22  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
Второй вопрос (как сайты узнают, что на них заходят с одного... 26.09.09 09:41  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
Второй вопрос (как сайты узнают, что на них заходят с одного компа, если куки и IP разные) тоже разрешился. Стыдно признаться, но это был мой касяк: я случайно поместил строковую переменную не в функцию потока, а в глобальную область видимости, и из-за этого у всех потоков были одинаковые куки.

PS. Целую неделю из-за этой проблемы мучался, а оказалось, что одна строчка кода виновата!
Спасибо, мужики! Оба решения помогли! Но вот ещё один вопрос. 20.09.09 15:40  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
Отредактировано 20.09.09 15:41  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
Как тот или иной сайт определяет, что два пользователя зашли с одного компьютера, если я использую платные анонимные прокси?

Когда я двумя потоками (у каждого из которых свои заголовки и куки) захожу на сайты требующие авторизации, то один из потоков обламывается. Когда запускаю две программы параллельно (каждая с одним потоком), то та же самая комбинация проходит на ура (обе программы авторизуются и все довольны).
[Win32] Если прокси для каждого подключения свои, то на вскидку - очевидная проблема - куки, которые wininet хранит в куче для одного процесса. возможно поможет шаманство с InternetGetCookie - InternetSetCookie для каждого подключения. 20.09.09 16:20  
Автор: kstati <Евгений Борисов> Статус: Elderman
Отредактировано 20.09.09 16:22  Количество правок: 2
<"чистая" ссылка> <обсуждение закрыто>


MSDN, InternetGetCookie
Нет, насколько я понимаю проблема не в этом. Я вызываю... 20.09.09 16:33  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
Отредактировано 20.09.09 16:45  Количество правок: 1
<"чистая" ссылка> <обсуждение закрыто>
Нет, насколько я понимаю проблема не в этом. Я вызываю функцию HttpOpenRequest с параметром INTERNET_FLAG_NO_COOKIES, благодаря этому Wininet игнорирует ответ сервера "set-cookie". А при соединении я сам устанавливаю те куки, которые мне нужны добавляя их к заголовку запроса.

Поэтому мне кажется, что проблема не в куках. Может быть я и не прав, но свои вышеописанные слова я проверял на локальном прокси-сервере, в котором видны все заголовки и контент. Плюс, если бы дело было в куках, то "афёра" с двойным запуском программы также не удалась бы, а она работает.

PS. Internet(Set/Get)Cookie в данном случае неприменимы, т.к. нет возможности использовать их исключительно для одного потока (они влияют сразу не только на все потоки конкретного процесса, но и вообще на все процессы).

В ообщем, мне кажется, что пробема не в куках, ну а в чём именно я так и не смог понять. Надеюсь на помощь компетентных людей.
Куки одни и те же для двух экземпляров программ? 20.09.09 17:57  
Автор: kstati <Евгений Борисов> Статус: Elderman
<"чистая" ссылка> <обсуждение закрыто>
> Нет, насколько я понимаю проблема не в этом. Я вызываю
> функцию HttpOpenRequest с параметром
> INTERNET_FLAG_NO_COOKIES, благодаря этому Wininet
> игнорирует ответ сервера "set-cookie". А при соединении я
> сам устанавливаю те куки, которые мне нужны добавляя их к
> заголовку запроса.
>
> Поэтому мне кажется, что проблема не в куках. Может быть я
> и не прав, но свои вышеописанные слова я проверял на
> локальном прокси-сервере, в котором видны все заголовки и
> контент. Плюс, если бы дело было в куках, то "афёра" с
> двойным запуском программы также не удалась бы, а она
> работает.
>
Куки одни и те же для двух экземпляров программ?

> PS. Internet(Set/Get)Cookie в данном случае неприменимы,
> т.к. нет возможности использовать их исключительно для
> одного потока (они влияют сразу не только на все потоки
> конкретного процесса, но и вообще на все процессы).
А кто мешает наладить нормальное межпоточное взаимодействие? Мьютексы в зубы и проблема в контексте одной системы решена
>
> В ообщем, мне кажется, что пробема не в куках, ну а в чём
> именно я так и не смог понять. Надеюсь на помощь
> компетентных людей.
Рельно браузер можено идентифицировать только по ip и (или) кукам. По скольку используются разные прокси, то вариант с ип-адресом отпадает.
Ёпт, естественно разные! 21.09.09 03:15  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка> <обсуждение закрыто>
> Куки одни и те же для двух экземпляров программ?
Ёпт, естественно разные!

>А кто мешает наладить нормальное межпоточное взаимодействие?
> Мьютексы в зубы и проблема в контексте одной системы решена
При таком подходе пока один поток грузит свои данные другой будет заблокирован. Получается многопоточная программа, которая работает также как и однопоточная.

> Рельно браузер можено идентифицировать только по ip и (или) кукам.
> По скольку используются разные прокси, то вариант с ип-адресом
> отпадает.
Я уже третье сообщение подряд говорю, что IP и куки разные для каждого потока, но тем не менее афёра не проходит. Но! Та же самая афёра проходит для разных процессов. Почему?
[win32] изначально - нет, но, судя по твоему предыдущему посту работа ведется через прокси. прокси является сервером. предполагаю, что решение рядом: internetsetoption() internet_option_max_conns_per_server 20.09.09 15:15  
Автор: kstati <Евгений Борисов> Статус: Elderman
Отредактировано 20.09.09 15:24  Количество правок: 4
<"чистая" ссылка> <обсуждение закрыто>
msdn.microsoft.com/en-us/library/aa385328(VS.85).aspx

http://www.google.ru/search?q=internet_option_max_conns_per_server+msdn
[Win32] Да, ограничивает. 20.09.09 14:59  
Автор: ryo-oh-ki Статус: Незарегистрированный пользователь
<"чистая" ссылка> <обсуждение закрыто>


WinInet limits connections per server
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach