Как быстро распознать 1 000 000 каптч через CapMonster?

Jeronimo

Client
Регистрация
07.01.2014
Сообщения
236
Благодарностей
205
Баллы
43
Всем привет.

В наличии: ZennoPoster 5, CapMonster 2, более 1 000 000 ссылок на страницы, содержащие номер телефона в виде изображения.
Задача: сокращение времени распознавания изображения.

Сейчас алгоритм работы таков: заходим на страницу, вытаскиваем картинку, распознаём через CapMonster (создал свой модуль со 100% распознаванием), сохраняем результат в файл, переходим к следующей странице.
Что не устраивает: на один цикл уходит 25 секунд (1 номер телефона = 25 секунд). А это примерно 3500 номеров в сутки. Этого мне мало. Нужно как минимум в 10 раз быстрее.

Мысли: как вариант, можно было бы исключить распознавание каптчи (-10 секунд) в самом цикле. Оставить только сохранение картинок на ПК. Потом взять все картинки и массово их распознать через CapMonster, а потом сохранить результат в файл.

Вопрос: а можно ли так сделать? Если нет, то можете порекомендовать способы увеличения скорости распознавания? Номеров телефонов в виде картинок у меня будет более 1 000 000.

Благодарности: заранее спасибо всем за помощь.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Видимо модуль сложный, от сюда и задержки такие. Если попробовать сделать модуль простой, тогда не будет задержек и не будут сьедаться потоки в СМ. Только сервер по мощнее нужен будет.
 
  • Спасибо
Реакции: Jeronimo

Jeronimo

Client
Регистрация
07.01.2014
Сообщения
236
Благодарностей
205
Баллы
43
Видимо модуль сложный, от сюда и задержки такие. Если попробовать сделать модуль простой, тогда не будет задержек и не будут сьедаться потоки в СМ. Только сервер по мощнее нужен будет.
А реализовать так, как я написал не получится? Т.е. массовая загрузка всех картинок в CapMonster 2 и распознавание с последующим сохранением.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Не думаю т.к. время распознавания от этого не измениться, останется прежним. У Вас на таком обьеме это создает основную проблему.
 

Jeronimo

Client
Регистрация
07.01.2014
Сообщения
236
Благодарностей
205
Баллы
43
Не думаю т.к. время распознавания от этого не измениться, останется прежним. У Вас на таком обьеме это создает основную проблему.
В самом CapMonster 2 у меня каптча распознаётся за 0,02-0,3 секунды. Остальное время (примерно 9 сек) по всей видимости уходит на обмен информацией между ZP и CM (а этот обмен никак не ускорить?).
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 453
Баллы
113
Хм... Один шаблон бегает и просто сохраняет картинки.
Другой шаблон - смотрит есть ли картинка - отправляет на распознавание и сохраняет результат.
Если модуль простой - запускаем данный шаблон в 1000 потоков - и получится минимум в 1000 раз быстрее (проблема останется в скорости скачивания этих картинок).
 

Jeronimo

Client
Регистрация
07.01.2014
Сообщения
236
Благодарностей
205
Баллы
43
Хм... Один шаблон бегает и просто сохраняет картинки.
Другой шаблон - смотрит есть ли картинка - отправляет на распознавание и сохраняет результат.
Если модуль простой - запускаем данный шаблон в 1000 потоков - и получится минимум в 1000 раз быстрее (проблема останется в скорости скачивания этих картинок).
К сожалению, у меня Lite версия ZennoPoster. Я им не так часто пользуюсь, чтобы покупать Professional...
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 453
Баллы
113
К сожалению, у меня Lite версия ZennoPoster. Я им не так часто пользуюсь, чтобы покупать Professional...
Лайт версию в многопотоке запустить не получится...
Если дело не секретное, то могу запустить на своем сервере (если дело одноразовое).
 
  • Спасибо
Реакции: Jeronimo

Jeronimo

Client
Регистрация
07.01.2014
Сообщения
236
Благодарностей
205
Баллы
43
Лайт версию в многопотоке запустить не получится...
Если дело не секретное, то могу запустить на своем сервере (если дело одноразовое).
А как с вами можно связаться? Скайп? Icq? Telegram?
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 453
Баллы
113
Последнее редактирование:

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 657
Благодарностей
656
Баллы
113
Возможно на сайте, как на авито есть мобильная версия, где номера можно было брать не картинками, также для распознавания можно использовать евил или тессеракт.
 
  • Спасибо
Реакции: Jeronimo

Jeronimo

Client
Регистрация
07.01.2014
Сообщения
236
Благодарностей
205
Баллы
43
Всем спасибо. Всё оказалось гораздо проще. На сайте действительно есть мобильная версия, а там уже номера телефонов не в виде картинок.
Так что даже распознавать не нужно.
По моим подсчётам, можно будет собирать примерно 20000 телефонов в сутки, это если один поток.
 
  • Спасибо
Реакции: Roman*

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 453
Баллы
113
Пример шаблона который может собирать номера с мобильной версии на запросах (мало ли кому-то еще пригодится...).

P.S. Получилось все же собрать в один сниппет...
C#:
string url = "https://m.avito.ru/moskva/tovary_dlya_kompyutera/prodaem_asiki_bitmain_antminer_d3_i_l3_ibelink_1222894632"; // или project.Variables["url_avito"].Value
string proxy =  String.Empty;
string cookie = String.Empty;

string get_avito = ZennoPoster.HttpGet(
				url, 
				proxy, 
				"UTF-8", 
				ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody, 
				30000, 
				cookie, 
				project.Profile.UserAgent, 
				true, 
				5,
				new [] {""}
				);

			string sessid = Regex.Match(get_avito, @"(?<=Set-Cookie:\ sessid=).*?(?=;)").Value;
			string u = Regex.Match(get_avito, @"(?<=Set-Cookie:\ u=).*?(?=;)").Value;
			string v = Regex.Match(get_avito, @"(?<=Set-Cookie:\ v=).*?(?=;)").Value;
			string sx = Regex.Match(get_avito, @"(?<=Set-Cookie:\ sx=).*?(?=;)").Value;
			string dfp_group = Regex.Match(get_avito, @"(?<=Set-Cookie:\ dfp_group=).*?(?=;)").Value;
			string mlocation = Regex.Match(get_avito, @"(?<=Set-Cookie:\ _mlocation=).*?(?=;)").Value;

cookie = string.Format("sessid={0}; u={1}; v={2}; sx={3}; dfp_group={4}; _mlocation={5}",sessid,u,v,sx,dfp_group,mlocation);

string  link_tel=Regex.Match(get_avito,@"(?<=js-action-show-number)[\w\W]*?(?=title=""Телефон\ продавца"")").Value;
	    link_tel=Regex.Match(link_tel,@"(?<=href=""/)[\w\W]*?(?="")").Value;
		link_tel = string.Format(@"https://m.avito.ru/{0}",link_tel);
		
string get_number_avito = ZennoPoster.HttpGet(
				link_tel,
				proxy,
				"UTF-8", 
				ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody, 
				30000,
				cookie, 
				project.Profile.UserAgent,
				true, 
				5,
				new [] {"Referer: "+ url }
				);
string number = Regex.Match(get_number_avito, @"(?<=<span\ class=""button-text"">).*?(?=</span>)").Value;
	   number = number.Replace(" ", "").Replace("-", "");

project.SendInfoToLog(number + " "+url);				
return number;
 

Вложения

Последнее редактирование:

Roman*

Client
Регистрация
25.09.2013
Сообщения
1 657
Благодарностей
656
Баллы
113
Всем спасибо. Всё оказалось гораздо проще. На сайте действительно есть мобильная версия, а там уже номера телефонов не в виде картинок.
Так что даже распознавать не нужно.
По моим подсчётам, можно будет собирать примерно 20000 телефонов в сутки, это если один поток.
Не забудь, что может быть бан через пол часа или сколько то открытых номеров. И может расскажешь как рассылаешь по этим номерам? Майл агент, телега, вибер, воцапп?
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 453
Баллы
113
Не забудь, что может быть бан через пол часа или сколько то открытых номеров. И может расскажешь как рассылаешь по этим номерам? Майл агент, телега, вибер, воцапп?
Знаю людей, которые производят рассылку СМС через Вайбер используя вот этот сервис.
Но, вот что конкретно рассылают на такие номера - сложно сказать.
Я сам давненько хотел заняться СМС рассылками, но как покрыть стоимость рассылки так и не придумал.
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 596
Благодарностей
1 014
Баллы
113
Лайт версию в многопотоке запустить не получится...
так ему надо на пост/гетах немного нашуровать, тут же в одной конкурсной статье было хоть в миллион потоков в лайт для них...
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 453
Баллы
113
так ему надо на пост/гетах немного нашуровать, тут же в одной конкурсной статье было хоть в миллион потоков в лайт для них...
Да можно было использовать такой цикл:
Код:
System.Threading.Tasks.Parallel.ForEach(list, data => { // выполняем работу});
Но, мне кажется, что управлять таким шаблоном будет сложновато человеку, который сам не знает как такое написать (не в бесконечном же цикле выполнять эту работу - придется городить логику, например берем 100 каптч, а потом данным циклом отправляем на распознавание...).
С другой стороны - скорость теряется мне кажется не на самом распознавании, а на сборе самих каптч.
Так вот в итоге я посмотрел что в мобильной версии картинок нет - набросал пример запросов... А далее уже используя прокси можно работать.
В любом случае на запросах куда быстрее даже в один поток будет работать чем работало до этого в браузере.
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 596
Благодарностей
1 014
Баллы
113
Так вот в итоге я посмотрел что в мобильной версии картинок нет набросал пример запросов...
блин не посмотрел...
про мобильную версию это в закрытом разделе писали еще 3 или 4 года назад и пример запросов тоже там был )
я просто думал авито чето поменяла опять :-)
сорян, что дернул в общем.
 
  • Спасибо
Реакции: BAZAg

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 453
Баллы
113
про мобильную версию это в закрытом разделе писали еще 3 или 4 года назад и пример запросов тоже там был )
Я с данным сайтом никогда не работал.
Видимо из-за этого не следил за темами в которых это обсуждалось...
Мне было чисто теоретически интересно как это решается.
сорян, что дернул в общем.
Да ладно, в таком общении глядишь и какую-то интересную идейку подчерпнуть для себя можно :-)
 

GREXA

Client
Регистрация
16.09.2017
Сообщения
276
Благодарностей
103
Баллы
43
как я понял шаблон который выше не актуален? у меня не показывает номер
 

Jeronimo

Client
Регистрация
07.01.2014
Сообщения
236
Благодарностей
205
Баллы
43

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