Каптча в многопотоке.

Evgeny76

Client
Регистрация
11.09.2015
Сообщения
192
Благодарностей
85
Баллы
28
Всем привет!
Есть сайт на котором каптча выскакивает через каждые 100 запросов к нему. Каптча "привязывается" к IP адресу. При работе в один поток проблем никаких нет, поймали каптчу, отправили на разгадывание и работаем дальше. Но при запуске в несколько потоков, как только общее количество запросов достигло сотни, то каптча выскакивает на всех потоках.
Каким образом сделать чтобы на разгадывание каптчу взял только один поток, а остальные ждали?
Пробовал сделать на проверку файла-картинки каптчи, то есть поймали каптчу, скачали, а шаблон проверяет есть ли файл и если он есть, то ждём. Но шаблон работает на гет запросах, работает очень быстро. И пока один поток поймал каптчу, он не успел ещё картинку сохранить на диск, как и остальные потоки тоже её уже поймали, так как файла ещё нет на диске.
Сейчас реализовал работу двумя шаблонами. Один с разгадыванием каптчи - работает в один поток. Второй шаблон без разгадывания, работает в многопотоке, он при появлении каптчи просто ждёт пару секунд и опять обращается к сайту. Решение, в принципе рабочее, но хотелось бы засунуть всё в один шаблон.
Спасибо!
 

volody00

Client
Регистрация
06.09.2016
Сообщения
793
Благодарностей
812
Баллы
93
запиши в переменную уровня проекта значение 1. когда какой-то из потоков поймал каптчу, он проверяет, есть ли в переменной значение 1 и если да, то меняет на 0 и идет разгадывать каптчу (тут ещё может быть проверка а есть ли каптча). когда разгадает вернет обратно 1.
P.S. Если на c# пишешь, можно вообще наверное в lock проверку на каптчу засунуть и всё.
 

Evgeny76

Client
Регистрация
11.09.2015
Сообщения
192
Благодарностей
85
Баллы
28

volody00

Client
Регистрация
06.09.2016
Сообщения
793
Благодарностей
812
Баллы
93
  • Спасибо
Реакции: Evgeny76

Evgeny76

Client
Регистрация
11.09.2015
Сообщения
192
Благодарностей
85
Баллы
28

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)