О, кстати, вглядевшись пристальнее в основную схему (не в способ выцепления картинки), обнаружил в ней ошибки, приводящие к множественному запросу (4 раза), то есть нам ответ от сервера приходил на 4 запроса подряд. Сохранялись 2 полноценные капчи (с разными цифрами) и две "битые". Можно убедиться, посмотрев, что запрашивается у сервера (нижний TCPClient в схеме) или сохраняя файлы на диск, приделав в конце что-то в этом роде: Исправил, заодно удалил пару лишних связей (от точек Text у Edit-ов, ибо по событию onChange и так передается текст). Позволил себе внести маленькое дополнение в блок от nesco, а именно очищение массива, для возможности обновить капчу не выходя из программы. В общем вот: Add(MainForm,4007105,231,119) { Width=741 Height=721 Caption="" BorderStyle=3 Icon=[ZIPFE04000078DA63606004421E1E0620C9C1F0828581418C818141038881420C120C10711038C08009FEFFFF0FA63FE7FA32FC7D728FE1DFDB970C3FB72D63F8B17636C38FF95D7075F30D1818A6B64D621805A360140C1FC08802B8A100CC8628C0C206A9A08238925D08F0FF03B09C32200E83D402001CC5250C] } Add(TCP_Client,10034032,623,196) { Port=80 IP="95.131.24.244" link(onRead,10439384:doCharset,[]) } Add(Hub,13244677,581,196) { link(onEvent1,10034032:doOpen,[]) link(onEvent2,10034032:doSend,[(616,209)(616,216)]) } Add(HTTP_PostBuilder,14479359,525,196) { URL="/logon" Host="www.promo-immunitet.ru" link(onBuild,13244677:doEvent1,[]) } Add(FormatStr,3111088,420,196) { Mask="UserName=%1&Password=%2" link(onFString,10559428:doCharset,[]) link(Str1,1204455:Text,[(426,170)(405,170)]) link(Str2,5525898:Text,[(433,171)(454,171)]) } Add(Edit,1204455,399,105) { Left=5 Top=5 Width=115 Text="denis_bardak@mail.ru" } Add(Edit,5525898,448,105) { Left=125 Top=5 Width=115 Text="19843" } Add(Charset,10559428,469,196) { Type=6 link(onCharset,14479359:doBuild,[]) } Add(RichEdit,184583,973,182) { Left=10 Top=235 Width=660 Height=205 ScrollBars=2 } Add(Button,1683819,231,196) { Left=250 Top=620 link(onClick,3111088:doString,[]) } Add(Charset,10439384,672,196) { Type=7 link(onCharset,11644460:doEvent1,[]) } Add(BlockFind,4207673,826,210) { StartBlock=".ASPXAUTH" EndBlock=";" link(onSearch,15359009:doReplace,[]) } Add(Hub,11644460,714,196) { OutCount=3 link(onEvent1,184583:doText,[]) link(onEvent2,1730105:doSearch,[(749,209)(749,167)]) link(onEvent3,4207673:doSearch,[]) } Add(Edit,14159926,805,161) { Left=280 Top=5 Width=530 Text="" } Add(Edit,4200526,910,210) { Left=280 Top=30 Width=530 Text="" link(onChange,6846226:doString,[(957,216)(957,273)(219,273)(219,328)]) } Add(BlockFind,1730105,763,161) { StartBlock="ASP.NET_" EndBlock=";" link(onSearch,14159926:doText,[]) } Add(FormatStr,6846226,224,322) { Mask="__utma=164098174.1301054235.1300211504.1300282287.1300283880.4; __utmz=164098174.1300211504.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); %1 __utmb=164098174.3.10.1300283880; __utmc=164098174; %2" Point(FString) link(onFString,10108902:doString,[]) link(Str1,14159926:Text,[(230,284)(811,284)]) } Add(Edit,3311278,525,315) { Left=15 Top=70 Width=795 Text="" } Add(Charset,11718953,427,371) { Type=6 CodePage1=1251 link(onCharset,6636103:doEvent1,[]) } Add(Replace,15359009,868,210) { SubStr=";" link(onReplace,4200526:doText,[]) } Add(Hub,6636103,476,371) { OutCount=3 link(onEvent1,10614830:doOpen,[]) link(onEvent2,10614830:doSend,[(512,384)(512,391)]) link(onEvent3,3311278:doText,[(497,391)(497,321)]) } Add(FormatStr,10108902,280,322) { DataCount=1 Mask="GET /cabinet HTTP/1.1 Host: www.promo-immunitet.ru User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.15) Gecko/20110303 MRA 5.6 (build 03399) Firefox/3.6.15 sputnik 2.4.0.48 WebMoney Advisor Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 Connection: keep-alive Referer: http://www.promo-immunitet.ru/main?ReturnUrl=%2fcabinet%2fprofile%2ffillup%3fautoRedirect%3dtrue%26redirectUrl%3dhttp%253a%252f%252fwww.promo-immunitet.ru%252fcabinet&autoRedirect=true&redirectUrl=http%3a%2f%2fwww.promo-immunitet.ru%2fcabinet Cookie: %1
" Point(FString) link(onFString,2223369:doEvent1,[]) } Add(RichEdit,16218921,371,308) { Left=10 Top=105 Width=655 Height=125 ScrollBars=2 } Add(Charset,5450629,581,371) { Type=7 link(onCharset,16000270:doSearch,[]) } Add(TCP_Client,10614830,525,371) { Port=80 IP="95.131.24.244" link(onRead,5450629:doCharset,[]) } Add(DoData,7801882,371,371) { link(onEventData,11718953:doCharset,[]) link(Data,16218921:Text,[]) } Add(BlockFind,16000270,637,371) { IncludeBlock=1 StartBlock="id="captcha-image" src="" EndBlock="" width" link(onSearch,13502116:doText,[]) } Add(Edit,13502116,686,371) { Left=535 Top=630 link(onChange,1711999:doString,[(759,377)(759,436)(212,436)(212,496)]) } Add(Charset,6896142,364,574) { Type=6 CodePage1=1251 link(onCharset,14200894:doEvent1,[]) } Add(Hub,14200894,413,574) { link(onEvent1,10266910:doOpen,[]) link(onEvent2,10266910:doSend,[(445,587)(445,594)]) } Add(FormatStr,1711999,224,490) { Mask="GET %2 HTTP/1.1 Host: www.promo-immunitet.ru User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.15) Gecko/20110303 MRA 5.6 (build 03399) Firefox/3.6.15 sputnik 2.4.0.48 WebMoney Advisor Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive Cookie: %1 Cache-Control: max-age=0
" Point(FString) link(onFString,9386017:doEvent1,[]) link(Str1,6846226:FString,[]) } Add(RichEdit,1129834,308,476) { Left=10 Top=105 Width=655 Height=125 ScrollBars=2 } Add(TCP_Client,10266910,462,574) { Port=80 IP="95.131.24.244" Point(onProgress) link(onRead,15263772:doSearch,[]) } Add(DoData,2464722,308,574) { link(onEventData,6896142:doCharset,[]) link(Data,1129834:Text,[]) } Add(Hub,2223369,329,322) { link(onEvent1,16218921:doText,[]) link(onEvent2,7801882:doData,[(352,335)(352,377)]) } Add(Hub,9386017,273,490) { link(onEvent1,1129834:doText,[]) link(onEvent2,2464722:doData,[(297,503)(297,580)]) } Add(Image,3627320,938,623) { @Color=16757169 Left=425 Top=450 Width=240 Height=100 } Add(Jpeg,11574856,889,623) { @Color=16757169 Point(doLoadFromStream) Point(doBitmap) Point(Stream) link(onBitmap,3627320:doLoad,[]) link(Stream,10146094:Var3,[(895,562)]) } Add(BlockFind,1462634,588,623) { @Color=9360639 Delete=0 StartBlock="HTTP" EndBlock="13101310" link(onEndSearch,10572300:doConvert,[]) } Add(Convertor,10572300,637,630) { @Color=9360639 Mode=12 link(onResult,13112055:doCopy,[]) } Add(StreamCopy,13112055,686,630) { @Color=9360639 Count=-1 link(onCopy,3184583:doCompare,[]) link(Dest,10146094:Var2,[]) } Add(MemoryStream,2954231,686,518) { @Color=9360639 Point(doPosition) } Add(Hub,10351640,840,630) { @Color=16757169 OutCount=4 link(onEvent1,4801834:doData,[(866,636)(866,511)(618,511)(618,538)]) link(onEvent2,11574856:doLoadFromStream,[]) link(onEvent3,11574856:doBitmap,[]) link(onEvent4,2954231:doClear,[(873,657)(873,504)(674,504)(674,531)]) } Add(GetDataEx,10146094,686,557) { link(Data,2954231:Stream,[]) } Add(InfoTip,14958065,511,476) { Info=#0:|17:Накопитель потока| Font=[MS Sans Serif,8,1,0,1] Frame=3 Width=295 Height=256 } Add(InfoTip,7341891,812,476) { Info=#0:|32:Преобразование потока в картинку| Font=[MS Sans Serif,8,1,0,1] Frame=3 Width=183 Height=256 } Add(BlockFind,15263772,532,574) { @Color=9360639 IncludeBlock=1 Delete=0 StartBlock="Content-Length: " EndBlock="1310" link(onSearch,9106325:doConvert,[]) link(onEndSearch,1462634:doSearch,[(576,587)(576,629)]) } Add(Memory,12957497,742,574) { @Color=9360639 } Add(Convertor,9106325,588,574) { @Color=9360639 Mode=1 link(onResult,12957497:doValue,[]) } Add(If_else,3184583,735,630) { @Color=9360639 link(onTrue,10351640:doEvent1,[]) link(Op1,2954231:Size,[(741,615)(699,615)]) link(Op2,12957497:Value,[]) } Add(DoData,4801834,637,532) { @Color=9360639 Data=Integer(0) link(onEventData,2954231:doPosition,[]) }
[flood] nesco, а вот из спортивного интереса, при исправленном (одиночном) запросе, у вас отработает мой кривой метод? [/flood]
|