Вверх ↑
Ответов: 294
Рейтинг: 64
#1: 2011-03-18 05:00:31 ЛС | профиль | цитата
О, кстати, вглядевшись пристальнее в основную схему (не в способ выцепления картинки), обнаружил в ней ошибки, приводящие к множественному запросу (4 раза), то есть нам ответ от сервера приходил на 4 запроса подряд.
Сохранялись 2 полноценные капчи (с разными цифрами) и две "битые". Можно убедиться, посмотрев, что запрашивается у сервера (нижний TCPClient в схеме) или сохраняя файлы на диск, приделав в конце что-то в этом роде:
Add(Jpeg,11574856,658,504)
{
@Color=16757169
Point(doLoadFromStream)
Point(FileName)
link(FileName,5372540:Count,[])
}
Add(Hub,10351640,595,518)
{
@Color=16757169
OutCount=3
link(onEvent1,11574856:doLoadFromStream,[])
link(onEvent2,5372540:doNext,[(628,531)(628,454)])
link(onEvent3,11574856:doSave,[(641,538)(641,517)])
}
Add(Counter,5372540,658,448)
{
Min=1
}



Исправил, заодно удалил пару лишних связей (от точек 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]

карма: 0

0