Вверх ↑
Этот топик читают: Гость
Ответов: 287
Рейтинг: 4
#1: 2015-11-24 21:27:48 ЛС | профиль | цитата
Привет всем, доброго времени суток вам!
Народ, ну покажите пожалуйста кто знает, как вытащить именно ту капчу которая загружена в браузер!code_36532.txt
карма: 2

0
файлы: 1code_36532.txt [3.8KB] [418]
vip
#1.1контекстная реклама от партнеров
Разработчик
Ответов: 26067
Рейтинг: 2121
#2: 2015-11-25 02:54:04 ЛС | профиль | цитата
А так не пойдет? Тупо, но работает. Может кто предложит еще какое, более оригинальное решение

Add(Label,2756427,420,329)
{
Width=443
Height=17
Color=65280
Caption="Логин и пароль можно ввести любой, или вообще не вводить! и нажать кнопку войти на на страницу с капчей"
}
Add(WebBrowser,5966964,497,329)
{
Top=15
Width=1285
Height=490
URL="http://uh.ru/login/"
Silent=0
Point(Handle)
}
Add(Button,13991984,420,392)
{
Left=5
Top=510
Width=75
Caption="картинка"
link(onClick,7776974:doEvent1,[])
}
Add(MainForm,5413715,376,327)
{
Width=1305
Height=795
Caption="Image Downloader"
}
Add(Image,6409034,889,525)
{
Left=90
Top=510
Width=80
Height=60
}
Add(ScreenShort,8359790,511,392)
{
link(onCapture,12471748:doLoad,[])
link(Handle,5966964:Handle,[])
}
Add(Hub,7776974,469,392)
{
link(onEvent1,8359790:doCapture,[])
link(onEvent2,12787756:doFor,[(501,405)(501,531)])
}
Add(Img_GetPoint,2472433,616,525)
{
Y=3
link(onGetPixel,5300049:doCompare,[])
link(Bitmap,5519514:Var2,[])
}
Add(Bitmap,12471748,560,392)
{
Point(Width)
}
Add(For,12787756,560,525)
{
IncludeEnd=1
link(onEvent,2472433:doGetPixel,[])
link(End,12471748:Width,[])
}
Add(If_else,5300049,679,525)
{
link(onTrue,14680928:doEvent1,[])
link(Op1,2418120:Result,[])
}
Add(SelectColor,2418120,679,476)
{
Color=16777215
}
Add(Hub,14680928,728,525)
{
link(onEvent1,12682651:doOperation,[])
link(onEvent2,12787756:doStop,[(753,538)(753,580)(550,580)(550,538)])
}
Add(Math,12682651,777,525)
{
Op2=10
ResultType=0
link(onResult,3196831:doCopy,[])
link(Op1,12787756:Position,[(783,516)(720,516)(720,565)(566,565)])
}
Add(Img_Copy,3196831,826,525)
{
Y=162
Width=80
Height=60
link(onCopy,6409034:doLoad,[])
link(Source,5519514:Var3,[(832,467)])
}
Add(GetDataEx,5519514,616,462)
{
Angle=3
link(Data,12471748:Bitmap,[(566,467)])
}



карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#3: 2015-11-25 18:13:03 правка | ЛС | профиль | цитата


Редактировалось 5 раз(а), последний 2021-05-21 06:12:30
карма: 0

0
Ответов: 287
Рейтинг: 4
#4: 2015-11-25 18:16:51 ЛС | профиль | цитата
Блин, забыл авторезироваться.
карма: 2

0
Ответов: 4622
Рейтинг: 746
#5: 2015-11-25 19:11:18 ЛС | профиль | цитата
А цель какая? Нужен именно браузер?
карма: 26

0
Ответов: 16884
Рейтинг: 1239
#6: 2015-11-25 19:45:29 ЛС | профиль | цитата
Ищи в поиске. Тут с капчами juk вроде боролся. Победил или нет не знаю.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 287
Рейтинг: 4
#7: 2015-11-25 21:29:22 ЛС | профиль | цитата
Netspirit, Да.
Tad, от juk-ка я вроде-бы все посты просмотрел, ничего нет! Может пропустил чего, незнаю, завтра ещё раз просмотрю.
карма: 2

0
Ответов: 902
Рейтинг: 27
#8: 2015-11-27 10:43:26 ЛС | профиль | цитата
Sova-Kmv, А, чем способ от nesco, не подходит? Помоему очень неплохо.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 4622
Рейтинг: 746
#9: 2015-11-27 11:34:44 ЛС | профиль | цитата
Sova-Kmv, если из браузера вытащить куки PHPSESSID для данного сайта, то можно повторно запросить картинку отдельным запросом. HTTPClient+CookieManager должны суметь это сделать.
------------ Дoбавленo в 11.34:
А нет, не получится. Нужно другим способом вытащить куки из браузера.
карма: 26

0
Разработчик
Ответов: 26067
Рейтинг: 2121
#10: 2015-11-27 11:58:17 ЛС | профиль | цитата
juk писал(а):
А, чем способ от nesco, не подходит? Помоему очень неплохо.

Это из серии -- мы не ищем легких путей
карма: 22

0
Ответов: 902
Рейтинг: 27
#11: 2015-11-27 13:17:13 ЛС | профиль | цитата
Это из серии --
Мы их уже нашли!
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 1073
Рейтинг: 76
#12: 2015-11-30 02:55:45 ЛС | профиль | цитата
Заглянул на огонек, вспомнил что когдато ковырял капчи.
Отыскал старую недоделку, удалил все лишнее и добавил для размышления. Может кому пригодится, у меня времени нет допиливать.

Если кто будет ковырять, нужно учитывать:
   Доступ к создаваемым объектам из скриптов выполненных с помощью ExecScript - отсутствует либо ограничен.
   Функции выполненные ExecScript не могут возвращать результат, передача параметров поддерживается.
   Чтобы достучатся к переменным из IC их нужно явно присваивать объекту window.(возможно не во всех версиях IE)
   Возвращаемый результат желательно в string-е или integer-е и т.п. Функция может вернуть массив, но вот работать с ним у меня так и не получилось, поскольку он в реальности будет olevariant. Если кто имеет опыт пускай поделится.

В IC и Memo есть немного подсказок для понятия принципа. Все недостающее легко доделывается по тому же принципу.
Add(MainForm,2953706,63,56)
{
Width=887
Height=622
Position=1
Point(onClose)
link(onCreate,13950465:doWork,[])
link(onClose,9676733:doWork,[])
}
Add(Edit,6271191,112,133)
{
Left=475
Top=5
Width=355
Text="https://www.google.ru/"
}
Add(Button,16349967,63,182)
{
Left=830
Top=5
Width=35
Caption="GO"
link(onClick,12976651:doNavigate,[])
}
Add(WebBrowser,12976651,112,182)
{
Left=475
Top=30
Width=390
Height=265
Point(PHandle)
Point(doFromText)
link(URL,6271191:Text,[])
}
Add(Button,4333300,63,266)
{
Left=5
Top=5
Width=85
Caption="execjs"
link(onClick,1727944:execjs,[])
}
Add(InlineCode,1727944,126,266)
{
WorkPoints=#6:execjs|6:evaljs|
EventPoints=#6:result|6:source|
DataPoints=#13:HandleBrouser|7:JScript|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|40:uses kol,Share,Debug,ActiveX,KOLSHDocVw;|0:|4:type|28: THiAsmClass = class(TDebug)|0:|10: private|0:|9: public|28: HandleBrouser: THI_Event;|22: JScript: THI_Event;|21: result: THI_Event;|21: source: THI_Event;|16: pc: PControl;|49: procedure execjs(var _Data:TData; Index:Word);|49: procedure evaljs(var _Data:TData; Index:Word);|0:|5: end;|1: |14:implementation|4:type|31: TKOLWebBrowser = PWebBrowser;|31: PKOLWebBrowser = PWebBrowser;|0:|58:procedure THiAsmClass.execjs(var _Data:TData; Index:Word);|9:begin |47: pc := PControl(ToIntegerEvent(HandleBrouser));|31: if not Assigned(pc) then exit;|11: begin|113: PKOLWebBrowser(pc).OleObject.Document.ParentWindow.ExecScript(ReadString(_Data, JScript), 'javascript') ;|102: _hi_onEvent(source, String(PKOLWebBrowser(pc).OleObject.Document.documentElement.outerHTML));|10: end;|4:end;|0:|58:procedure THiAsmClass.evaljs(var _Data:TData; Index:Word);|9:begin |46:pc := PControl(ToIntegerEvent(HandleBrouser));|32: if not Assigned(pc) then exit;|8: begin|9: |115: _hi_onEvent(result, String(PKOLWebBrowser(pc).OleObject.Document.ParentWindow.test1())); // вызов функции|145: _hi_onEvent(result, String(PKOLWebBrowser(pc).OleObject.Document.ParentWindow.test2(' test params'))); // передача параметров в функцию|148: _hi_onEvent(result, 'тело функции равно = ' + String(PKOLWebBrowser(pc).OleObject.Document.ParentWindow.test1)); // Получаем тело функции|114: PKOLWebBrowser(pc).OleObject.Document.ParentWindow.test3(); // Создание переменных с дефолтным значением|170: _hi_onEvent(result, 'значение тестовой переменной равно =' + String(PKOLWebBrowser(pc).OleObject.Document.ParentWindow.testvar));// получаем значение переменной|106: PKOLWebBrowser(pc).OleObject.Document.ParentWindow.testvar := 'new value'; // установка значения|170: _hi_onEvent(result, 'значение тестовой переменной равно =' + String(PKOLWebBrowser(pc).OleObject.Document.ParentWindow.testvar));// получаем значение переменной|144: _hi_onEvent(result, 'Длинна массива =' + String(PKOLWebBrowser(pc).OleObject.Document.ParentWindow.testvar2.length));// Длинна массива|13: // |100: _hi_onEvent(result, String(PKOLWebBrowser(pc).OleObject.Document.ParentWindow.hi_func()));|7: end;|4:end;|0:|123://_hi_onEvent(result, String(PKOLWebBrowser(pc).OleObject.Document.documentElement.outerHTML)); // .innerHTML // .outerText|68://PKOLWebBrowser(pc).OleObject.Document.all.tags('TagName').Length; |126://_hi_onEvent(result, String(PKOLWebBrowser(pc).OleObject.Document.all.tags('TagName').Item('index').outerHTML)); // innerHTML|105://PKOLWebBrowser(pc).OleObject.Document.all.tags('TagName').Item('index').focus; //.click // .onmousedown|130://PKOLWebBrowser(pc).OleObject.Document.all.tags('TagName').Item('index').setAttribute('target', '_self'); // открыть в томже окне|143:// .setAttribute(AttributeName,AttributeValue) // .getattribute(AttributeName) //.HasAttribute(AttributeName) //.RemoveAttribute(AttributeName)|112://OffsetLeft:= PKOLWebBrowser(pc).OleObject.Document.all.tags('TagName').Item('index').offsetLeft; //.offsetTop;|135:// .getBoundingClientRect().top; // .getBoundingClientRect().left; // .getBoundingClientRect().right //.getBoundingClientRect().bottom|99://PKOLWebBrowser(pc).OleObject.Document.ParentWindow.ScrollTo(val1, val2); // .ScrollBy(val1, val2)|100://PKOLWebBrowser(pc).OleObject.Document.Body.Style.OverflowX := 'hidden'; // .OverflowY := 'hidden';|114://scrollWidth/scrollHeight // scrollLeft/Top //ParentWindow.pageXOffset/pageYOffset document.body.scrollLeft/Top|84://PKOLWebBrowser(pc).OleObject.Document.documentElement.ClientWidth // .ClientHeight|40://перенос строки 'часть1'#13#10'часть2'|100://Text2Clipboard(PKOLWebBrowser(pc).OleObject.Document.all.tags('TagName').Item('index').outerHTML);|0:|4:end.|
link(result,3309072:doAdd,[])
link(HandleBrouser,12976651:PHandle,[])
link(JScript,11306264:Text,[(139,236)(160,236)])
link(source,5559069:doEvent1,[])
}
Add(MultiElementEx,9371579,210,70)
{
@Hint=#11:эмуляция IE|10:11001 IE11|10:11000 IE11|10:10001 IE10|10:10000 IE10|10:9999 IE9 |9:9000 IE9|10:8888 IE8 |9:8000 IE8|9:7000 IE7|
link(Data,14602570:Text,[])
AddHint(36,0,77,130,@Hint)
}
BEGIN_SDK
Add(EditMultiEx,16166731,21,21)
{
WorkCount=#5:write|3:del|
DataCount=#4:Data|
link(write,7906811:doPart,[(95,27)(95,97)])
link(del,1560214:doDeleteValue,[(87,34)(87,160)])
}
Add(Registry,1560214,154,140)
{
HKey=2
Key="SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION\"
DataType=0
Point(doDeleteValue)
link(Data,16166731:Data,[(160,84)(27,84)])
link(Value,7906811:Part,[])
}
Add(Application,12963505,168,42)
{
}
Add(FilePartElm,7906811,168,91)
{
Point(Part)
link(onPart,1560214:doWrite,[(207,97)(207,125)(144,125)(144,153)])
link(FileName,12963505:AppFileName,[])
}
END_SDK
Add(VisualStrings,14602570,210,35)
{
Lines=#5:11000|
Width=46
}
Add(RichEdit,11306264,154,182)
{
Left=5
Top=30
Width=465
Height=550
Ctl3D=0
Strings=#29:// пример добавления функций |17:function mytest()|1:{|31: alert('выполнение mytest()');|2:};|21:function mytest1(msg)|1:{|13: alert(msg);|2:};|0:|8:// вызов|9:mytest();|32:mytest1('выполнение mytest1()');|0:|52:// загрузчик скриптов для добавления в тело страницы|26:function JSLoader(source){|53:var head = document.getElementsByTagName('head')[0]; |40:script=document.createElement('script');|30:script.type='text/javascript';|26://script.innerHTML=source;|60:script.text=source; // в новых версиях innerHTML не работает|28:head.appendChild(script); };|0:|40:// Пример добавления скрипта на страницу|43:// попытка получить картинку base64 строкой|9:JSLoader(|24:function getimg(number){|35: var img = document.images[number]|48: var canvas = document.createElement("canvas");|27: canvas.width = img.width;|29: canvas.height = img.height;|40: var context = canvas.getContext('2d');|29: context.drawImage(img,0,0);|46: var dataURL = canvas.toDataURL("image/png");|63: return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");|3:});|0:|43:// попытка получить картинку base64 строкой|18:function mytest3()|1:{|47: for(var i = 0; i<document.images.length; i++)|3: {|56: alert('всего - '+document.images.length+': #' + i);|44: alert('src - '+document.images[i].src);|22: alert(getimg(i));|3: }|2:};|10:mytest3();|0:|30:// пример получения результата|9:JSLoader(|18:function hi_func()|1:{|45: return 'возвращаемый результат из hi_func';|3:});|1: |18:// Тест для evaljs|9:JSLoader(|16:function test1()|1:{|51: return 'test1 - вызов переменной без параметров';|3:});|0:|9:JSLoader(|19:function test2(msg)|1:{|70: return 'test2 - вызов переменной с параметрами. Параметры = ' + msg;|3:});|0:|9:JSLoader(|16:function test3()|1:{|35: window.testvar = 'default value';|49: window.testvar2 = ['elem0', 'elem1', 'elem2']; |3:});|
ScrollBars=3
}
Add(Hub,5559069,175,273)
{
link(onEvent1,16260432:doClear,[(203,279)(203,293)])
link(onEvent2,16260432:doAdd,[])
}
Add(Button,14640082,63,301)
{
Left=385
Top=5
Width=85
Caption="evaljs"
link(onClick,1727944:evaljs,[(111,307)(111,279)])
}
Add(RichEdit,3309072,259,266)
{
Left=475
Top=495
Width=390
Height=85
ScrollBars=3
}
Add(RichEdit,16260432,217,280)
{
Left=475
Top=300
Width=390
Height=190
Ctl3D=0
ScrollBars=3
}
Add(Check,13950465,119,70)
{
Check=1
Caption="wr"
link(onEvent,9371579:write,[])
}
Add(Check,9676733,161,77)
{
Check=1
Caption="del"
link(onEvent,9371579:del,[])
}


карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#13: 2015-12-07 20:08:29 правка | ЛС | профиль | цитата


Редактировалось 5 раз(а), последний 2021-05-21 06:12:30
карма: 0

0
Ответов: 902
Рейтинг: 27
#14: 2015-12-07 20:16:10 ЛС | профиль | цитата
Выше, это я вопрос задал. Что-то выкинуло с форума.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
14
Сообщение
...
Прикрепленные файлы
(файлы не залиты)