Что нового

[Сеть, интернет] Сохранение Капчи в файл

falcon92

Новичок
Сообщения
5
Репутация
0
Доброго времени, ребят ;)

Пишу гуй для регистрации на сайте. Столкнулся с проблемой. Вроде как все POST-ы передаются нормально (тестировал в браузере ручками + HttpAnalyzer).. Но вот с капчей косяк. Не могу сохранить в файлу. Что то с передачей нужных кук.

Код:
#include <IE.au3>
#include <Array.au3>
#include <String.au3>

$sEmail = "[email protected]"
$sPass = "testuser"
$sDomain = "kkkwlwlw335"
$sID = ""
Global $cookie, $sCookie

$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
$oHTTP.Open("POST", "http://my.dot.tk/cgi-bin/login02.taloha")
$oHTTP.setTimeouts(5000, 5000, 15000, 15000)
$oHTTP.SetRequestHeader("User-Agent", "Opera/9.80 (Windows NT 6.1; U; Edition Next; ru) Presto/2.9.186 Version/12.00")
$oHTTP.SetRequestHeader("Host", "my.dot.tk")
$oHTTP.SetRequestHeader("Accept", "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1")
$oHTTP.SetRequestHeader("Accept-Language", "ru-RU,ru;q=0.9,en;q=0.8")
$oHTTP.SetRequestHeader("Accept-Encoding", "gzip, deflate")
$oHTTP.SetRequestHeader("Referer", "http://my.dot.tk/cgi-bin/login01.taloha")
$oHTTP.SetRequestHeader("Cookie", "bgnr=2")
$oHTTP.SetRequestHeader("Connection", "Keep-alive")
$oHTTP.SetRequestHeader("Content-Length", "53")
$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
$oHTTP.Send('fldemail=' & $sEmail & '&fldpassword=' & $sPass)
$oHTTP.WaitForResponse
$resp = $oHTTP.ResponseText

_Cookies()

$oHTTP.Open("POST", "http://my.dot.tk/cgi-bin/rnt1000.taloha/CheckAvailability")
$oHTTP.setTimeouts(5000, 5000, 15000, 15000)
$oHTTP.SetRequestHeader("User-Agent", "Opera/9.80 (Windows NT 6.1; U; Edition Next; ru) Presto/2.9.186 Version/12.00")
$oHTTP.SetRequestHeader("Host", "my.dot.tk")
$oHTTP.SetRequestHeader("Accept", "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1")
$oHTTP.SetRequestHeader("Accept-Language", "ru-RU,ru;q=0.9,en;q=0.8")
$oHTTP.SetRequestHeader("Accept-Encoding", "gzip, deflate")
$oHTTP.SetRequestHeader("Referer", "http://my.dot.tk/cgi-bin/rnt1000.taloha/AddNewDomain")
$oHTTP.SetRequestHeader("Cookie", "mydomains=block; myprofile=none; bgnr=2; " & $cookie)	;bcd6e2f06da6a873ea923f0f38bdc5d8;
$oHTTP.SetRequestHeader("Connection", "Keep-alive")
$oHTTP.SetRequestHeader("Content-Length", "21")
$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
$oHTTP.Send('domainname=' & $sDomain)
$oHTTP.WaitForResponse
$resp = $oHTTP.ResponseText

_Cookies()

$oHTTP.Open("POST", "http://my.dot.tk/cgi-bin/rnt1000.taloha/ChooseType")
$oHTTP.setTimeouts(5000, 5000, 15000, 15000)
$oHTTP.SetRequestHeader("User-Agent", "Opera/9.80 (Windows NT 6.1; U; Edition Next; ru) Presto/2.9.186 Version/12.00")
$oHTTP.SetRequestHeader("Host", "my.dot.tk")
$oHTTP.SetRequestHeader("Accept", "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1")
$oHTTP.SetRequestHeader("Accept-Language", "ru-RU,ru;q=0.9,en;q=0.8")
$oHTTP.SetRequestHeader("Accept-Encoding", "gzip, deflate")
$oHTTP.SetRequestHeader("Referer", "http://my.dot.tk/cgi-bin/rnt1000.taloha/CheckAvailability")
$oHTTP.SetRequestHeader("Cookie", "mydomains=block; myprofile=none; bgnr=2; " & $cookie) ;"bcd6e2f06da6a873ea923f0f38bdc5d8;
$oHTTP.SetRequestHeader("Connection", "Keep-alive")
$oHTTP.SetRequestHeader("Content-Length", "21")
$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
$oHTTP.Send('domaintype=FreeDomain')
$oHTTP.WaitForResponse
$resp = $oHTTP.ResponseText

_Cookies()

$oHTTP.Open("POST", "http://my.dot.tk/registration/captcha")
$oHTTP.setTimeouts(5000, 5000, 15000, 15000)
$oHTTP.SetRequestHeader("User-Agent", "Opera/9.80 (Windows NT 6.1; U; Edition Next; ru) Presto/2.9.186 Version/12.00")
$oHTTP.SetRequestHeader("Host", "my.dot.tk")
$oHTTP.SetRequestHeader("Accept", "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1")
$oHTTP.SetRequestHeader("Accept-Language", "ru-RU,ru;q=0.9,en;q=0.8")
$oHTTP.SetRequestHeader("Accept-Encoding", "gzip, deflate")
$oHTTP.SetRequestHeader("Referer", "http://my.dot.tk/cgi-bin/rnt1000.taloha/ChooseType")
$oHTTP.SetRequestHeader("Cookie", "bgnr=2; " & $cookie)
$oHTTP.SetRequestHeader("Connection", "Keep-alive")
$oHTTP.Send($cookie)
$oHTTP.WaitForResponse
$resp = $oHTTP.ResponseText

;~ $f = FileOpen(@ScriptDir &'\captcha.bmp', 1+16)
;~ FileWrite($f, $resp)
;~ FileClose($f)

;~ _Cookies()

;~ $a = StringRegExpReplace($sID, "(session_id=)+", "")

;~ InetGet("http://my.dot.tk/registration/captcha?"&$sID, @ScriptDir &"\captcha.bmp",1)
;~ ShellExecute(@ScriptDir &"\captcha.bmp")

Func _Cookies()
	$headers = $oHTTP.GetAllResponseHeaders()
	ConsoleWrite($headers & @CRLF)
	If UBound($sCookie) = 0 Then
		$sCookie = _StringBetween($headers, "Set-Cookie: ", "domain=.dot.tk; path=/")
	Else
		$Temp = _StringBetween($headers, "Set-Cookie: ", "domain=.dot.tk; path=/")
;~ 		MsgBox(0, "", $Temp[0])
;~ 		If StringRegExp($Temp[0], "(" & $Temp[0] & ")+") = 1 Then
;~ 		_ArrayDisplay($sCookie)
		If UBound($Temp) <> 0 Then
			$Temp[0] = StringTrimRight($Temp[0], 2)
			$sID = $Temp[0]
;~ 			MsgBox(0, "", $sID)
			Local $iIndex = _ArraySearch($sCookie, $Temp[0], 0, 0, 0, 1)
			If $iIndex = -1 Then
				$sCookie = _ArrayMerge($sCookie, $Temp)
			EndIf
		EndIf
;~ 		EndIf
	EndIf
;~ 	MsgBox(0, "sc", $sCookie)
;~ 	_ArrayDisplay($sCookie)
	$cookie = ""
	For $i=0 To UBound($sCookie)-1
		$cookie = $cookie & $sCookie[$i]
	Next
;~ 	MsgBox(0, "c", $cookie)
	ConsoleWrite($cookie & @CRLF & @CRLF)
EndFunc

Func _ArrayMerge($amArray1, $amArray2)
    Local $tempArray = $amArray1
    Local $amElements = Ubound($tempArray) + Ubound($amArray2)
    Redim $tempArray[$amElements]
    Local $amCount = 0
    For $X = Ubound($amArray1) to $amElements - 1
        $tempArray[$X] = $amArray2[$amCount]
        $amCount += 1
    Next
    Return $tempArray
EndFunc

Снифая analyzer-ом, вижу, что возвращает страничку логина.

Второй код получения каптчи, но без логина на акк, работает.

Код:
Local $oIE, $url1 = "http://my.dot.tk/registration/captcha", $url2 = "http://my.dot.tk/registration/register?domainname=", $url3

$url3 = InputBox("", "")
$oIE = _IECreate()
_IENavigate($oIE,$url2&$url3)
$o=_IEDocGetObj($oIE)
InetGet($url1&'?'&$o.cookie, @ScriptDir &"\captcha.bmp",1)
ShellExecute(@ScriptDir &"\captcha.bmp")

На быдлокод внимания не обращать, это тестовый скрипт.
Первый раз пишу что то с пост запросами. Прощу хелпа. Проект встал :(

http://zalil.ru/315909
Сниф нормального браузинга по сайту в XML.
Картинки и прочее срезал.

UP: С линком на капч разобрался.. Теперь думаю как передать куки и скачать ее.. :scratch:
UP2: Вроде качается. Но не могу в файлу записать.. Пишется только первые 8 байт.. Хелп.. Открываю в 16+2 режиме. :(
UP3: Гыыы. Как всегда на мои проблемы хрен кто ответит :mad:
UP4: Вроде решил. :laugh: По закону подлости никто не помогает. Ни один форум :rofl: Ну мои запросы как всегда. ;D
 
Верх