Что нового

как получить капчу на GUI элемент

c.rauf.1986

Новичок
Сообщения
27
Репутация
0
Здравствуйте.Пытаюсь получить капчу на GUI элемент.

сайт seosprint.net

сначала надо зайти в страничку где будем вводить логин и пароль вместе с капчей.
Проблема в том что хочу все это реализовать с помощью WinhttpRequest.С FF.au3 и IE все нормально но с этим способом неудобно просто.
Даже на страницу логина зайти сложновато как то.

Код:
$sUrl = 'http://www.seosprint.net'
Global $oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
$oHTTP.Open('GET', $sUrl, False)

$oHTTP.SetRequestHeader("Host","www.seosprint.net")
$oHTTP.SetRequestHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36")
$oHTTP.SetRequestHeader("Accept","*/*")
$oHTTP.SetRequestHeader("Accept-Language","ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4")
$oHTTP.SetRequestHeader("Accept-Encoding","gzip,deflate,sdch")
$oHTTP.SetRequestHeader("Connection","keep-alive")
$oHTTP.SetRequestHeader("Content-Type","application/x-www-form-urlencoded")

$oHTTP.Send()
$oHTTP.WaitForResponse
$sHTML = $oHTTP.responseText


$id = StringMid($sHTML,StringInStr($sHTML,"btnlogin")+17,120)
$id = StringMid($id,1,StringInStr($id,'"')-1)

$oHTTP.Open('GET', $sUrl&"/"&$id, False)
$oHTTP.Send()
$oHTTP.WaitForResponse
$sHTML = $oHTTP.responseText

ConsoleWrite($sHTML)


пожалуйста что не так делаю помогите.
а после этого надо еще где то взять SID и отправить запрос на получение капчу.

С Http Analyzer смотрю 1-й запрос на вход сайт хорошо а потом из HTML беру Код который нужен для того что бы seosprint.net+КОД
вот от туда не могу получить ответ.

Если кто поможет буду признателен.


Добавлено:
Сообщение автоматически объединено:


есть еще такой вариант но как то опять не чего не получается.
в чем именно может быть ошибка не знаю

Код:
#include <WinHttp.au3>

$session = _WinHttpOpen('Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36')
$connect = _WinHttpConnect($session,'www.seosprint.net')
$data = 'log_email=xxxxxx&log_pass=xxxxxx&log_code=sdg&log_cnt=6415e86e7064fc74dc48723f3860e3a5&log_svd=1'
$shtml = _WinHttpSimpleRequest($connect,'POST','proc-service/us-login.php',Default,$data)

ConsoleWrite($shtml)
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
Что если встроить объект браузера в GUI и скрыть его. При запросе страницы получить её и по id капчи вывести рисунок в GUI, после ввода капчи отправить этот код на страницу в id-элемент ввода и кликнуть кнопку.
 
Автор
C

c.rauf.1986

Новичок
Сообщения
27
Репутация
0
удалось зайти на страницу логина. а дальше отправить запрос POST опять не получился.

;заходим на главный сайт
Код:
$sUrl = 'http://www.seosprint.net/' 
Global $oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
$oHTTP.Open('GET', $sUrl, True)

$oHTTP.SetRequestHeader("Host","www.seosprint.net")
$oHTTP.SetRequestHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36")
$oHTTP.SetRequestHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
$oHTTP.SetRequestHeader("Accept-Language","ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4")
$oHTTP.SetRequestHeader("Accept-Encoding","gzip,deflate,sdch")
$oHTTP.SetRequestHeader("Connection","keep-alive")
$oHTTP.SetRequestHeader("Content-Type","application/x-www-form-urlencoded")
$oHTTP.Send()
$oHTTP.WaitForResponse

$sHTML = $oHTTP.Responsetext ;получаем ответ

;-----------------------------------выдираем id на вход стр. логина------------------------
$id = StringMid($sHTML,StringInStr($sHTML,"btnlogin")+17,120)
$id = StringMid($id,1,StringInStr($id,'"')-1)
;-------------------------------------------------------------------------------------------

$oHTTP.Open('GET', $sUrl&$id, True) ;добавим на url полученный ID 
$oHTTP.SetRequestHeader("Host","www.seosprint.net")
$oHTTP.SetRequestHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36")
$oHTTP.SetRequestHeader("Referer",'http://www.seosprint.net/')
$oHTTP.SetRequestHeader("Accept-Encoding","gzip,deflate,sdch")
$oHTTP.SetRequestHeader("Accept-Language","ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4")
$oHTTP.SetRequestHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
$oHTTP.SetRequestHeader("Connection","keep-alive")
$oHTTP.Send()
$oHTTP.WaitForResponse

$headers = $oHTTP.GetAllResponseHeaders() ;Получаем Заголовки
$sHTML = $oHTTP.Responsetext

ConsoleWrite($headers)

;-----------------------------------выдираем 'asklcnt'  для запроса-------------------------
$log_cnt = StringMid($sHTML,StringInStr($sHTML,"asklcnt")+16,100)
$log_cnt = StringMid($log_cnt,1,StringInStr($log_cnt,'"')-1)
;-------------------------------------------------------------------------------------------

$data = '[email protected]&log_pass=5331279533261&log_code=sdgsg&log_cnt='&$log_cnt&'&log_svd=1' ; добавим тот  'asklcnt'

$oHTTP.Open('POST','http://www.seosprint.net/proc-service/us-login.php', True)
$oHTTP.SetRequestHeader("Host","www.seosprint.net")
$oHTTP.SetRequestHeader("Connection","keep-alive")
$oHTTP.SetRequestHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36")
$oHTTP.SetRequestHeader("Content-type",'application/x-www-form-urlencoded')
$oHTTP.SetRequestHeader("Accept","*/*")
$oHTTP.SetRequestHeader("Referer",$sUrl&$id)
$oHTTP.SetRequestHeader("Accept-Encoding","gzip,deflate,sdch")
$oHTTP.SetRequestHeader("Accept-Language","ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4")
$oCookie = GetCookie($headers)
$oHTTP.SetRequestHeader("Cookie",$oCookie)
$oHTTP.Send($data) ; посылаем данные
$oHTTP.WaitForResponse

;дальше смотрю весь прочес в HTTP Analyzer 
;1-й 200
;2-й 200
;3-й НЕ ЧЕГО. тот самый который отправлен запрос пишет '<Request is not completed.  waiting...>'
;по моему этот ответ бывает тогда когда запрос составлен не правильно.
;а то что касается на капчу пока еще не чего в голову не приходит.как можно получить ее в GUI елемент.

;я должен был получить ответ что 'вы ввели не правильный код капчу'
;а дальше разобраться с капчей.Вывести ее на GUI элемент и от туда вводить вручную
Func GetCookie($headers)
    Local $Cookie_String
    $headers = StringSplit($headers,@LF)
    For $i=1 to $headers[0]
        If StringInStr($headers[$i],"Set-Cookie")>0 Then
           $start         = StringInStr($headers[$i],"Set-Cookie:")+12
           $str           = StringSplit(StringMid($headers[$i],$start),";")
           $Cookie_String&= $str[1]&"; "
        EndIf
    Next
        $Cookie_String        = StringStripWS($Cookie_String,1)
    $Cookie_String        = StringStripWS($Cookie_String,2)
    $Cookie_String        = StringLeft($Cookie_String,StringLen($Cookie_String)-1)
    $COOKIE = $Cookie_String
EndFunc


Жду от вас ответа.Добрые люди.



Добавлено:
Сообщение автоматически объединено:

это код кнопки
Код:
<span class="button-green" onclick="login(document);" style="margin-top: 8px;">ВОЙТИ</span>

из этого кода видна что прочес обрабатывает "login(document);"
функция javascript
function login(doc)
{
var req_mail = doc.forms[0].asklemail.value;
var req_pass = doc.forms[0].asklpass.value;
var req_code = doc.forms[0].asklcode.value;
var req_cnt = doc.forms[0].asklcnt.value;
var req_svd = 0;
if (doc.getElementById('svdata').checked) req_svd = 1;
var tm;
function hidemsg()
{
$('#entermsg').fadeOut('slow');
if (tm)
clearTimeout(tm);
}
if (req_mail == '') {
doc.getElementById('entermsg').innerHTML = "<span class='msgbox-error'>Вы не указали e-mail для входа</span>";
doc.getElementById('entermsg').style.display = '';
tm = setTimeout(function() {
hidemsg()
}, 1000);
} else
if (req_pass == '') {
doc.getElementById('entermsg').innerHTML = "<span class='msgbox-error'>Вы не указали пароль для входа</span>";
doc.getElementById('entermsg').style.display = '';
tm = setTimeout(function() {
hidemsg()
}, 1000);
} else
if (req_code == '') {
doc.getElementById('entermsg').innerHTML = "<span class='msgbox-error'>Вы не указали код с картинки</span>";
doc.getElementById('entermsg').style.display = '';
tm = setTimeout(function() {
hidemsg()
}, 1000);
} else
if (req_cnt != '') {
var myReq = getXMLHTTPRequest();
var params = "log_email="+req_mail+"&log_pass="+req_pass+"&log_code="+req_code+"&log_cnt="+req_cnt+"&log_svd="+req_svd; создает запрос
function setstate()
{
if ((myReq.readyState == 4)&&(myReq.status == 200)) {
var resvalue = myReq.responseText;
if (resvalue == 'ok') {
location.href = "/index.php";
} else
if (resvalue == '') {
doc.getElementById('entermsg').innerHTML = "<span class='msgbox-error'>Запрос на аутентификацию составлен неверно</span>";
doc.getElementById('entermsg').style.display = '';
doc.getElementById('enterprocess').innerHTML = "";
} else {
doc.getElementById('entermsg').innerHTML = "<span class='msgbox-error'>"+resvalue+"</span>";
doc.getElementById('entermsg').style.display = '';
doc.getElementById('enterprocess').innerHTML = "";
}
} else {
doc.getElementById('enterprocess').innerHTML = "<span class='loading-dline' title='Подождите пожалуйста...'></span>";
doc.getElementById('entermsg').innerHTML = "";
}
}
myReq.open("POST", "/proc-service/us-login.php", true);
myReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
myReq.setRequestHeader("Content-lenght", params.length);
myReq.setRequestHeader("Connection", "close");
myReq.onreadystatechange = setstate;
myReq.send(params); отправляет запрос
}
return false;
}

а здесь добавляется на куки "hello="+Координат x sx+"."+Координат y sy;

jQuery(document).ready(function(){
$(".button-green").click(function(e){
var oLeft = 0, oTop = 0;
element = this;
if (element.className == 'button-green') {
do {
oLeft += element.offsetLeft;
oTop += element.offsetTop;
} while (element = element.offsetParent);
var sx = e.pageX - oLeft + 152;
var sy = e.pageY - oTop + 261;
document.cookie="hello="+sx+"."+sy;
}
});
})

не знаю может проблема с cookie.


Добавлено:
Сообщение автоматически объединено:

Пожалуйста помогите авторизоваться :stars: :stars: :stars:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
c.rauf.1986
Эта тема одна из не лёгких!
Получить captch`у можно, если она в виде рисунка.
Если же она формируется на стороне сервера при помощи PHP и GD библиотеки то вариант есть, но опять же, сложный!
Вкратце скажу, что вам нужно будет обратиться к серверу два раза, при этом сессию нужно будет держать открытой, и закрыть её только после второго обращения.
Первое обращение даст вам следующее:
1. Ссылку на php скрипт. Он формирует captch
2. Session ID
3. Cookies
Второе обращение с параметрами 2 и 3 по ссылки 1 даст вам ту же самую captch`у, которую вы и вставите в контейнер ActiveX IE, WebKit и т.д. (ну не писать же свой render HTML)
 
Автор
C

c.rauf.1986

Новичок
Сообщения
27
Репутация
0
Garrett

Да вы правы в этом но дело в том что сейчас первый что я должен сделать это отправить POST запрос.место капчи ввожу ложные данные пусть ответит что "Вы ввели не правильный код" Все данные ввожу правильно но как то не получается не какой ответ.
Пожалуйста в этом помогите мне.
а то что касается на капчу это уже потом.


Код:
#include <WinHttp.au3>

$sUrl = 'http://www.seosprint.net/' 
Global $oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
$oHTTP.Open('GET', $sUrl, True)

$oHTTP.SetRequestHeader("Host","www.seosprint.net")
$oHTTP.SetRequestHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36")
$oHTTP.SetRequestHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
$oHTTP.SetRequestHeader("Accept-Language","ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4")
$oHTTP.SetRequestHeader("Accept-Encoding","gzip,deflate,sdch")
$oHTTP.SetRequestHeader("Connection","keep-alive")
$oHTTP.SetRequestHeader("Content-Type","application/x-www-form-urlencoded")
$oHTTP.Send()
$oHTTP.WaitForResponse

$sHTML = $oHTTP.Responsetext ;получаем ответ

;-----------------------------------выдираем id на вход стр. логина------------------------
$id = StringMid($sHTML,StringInStr($sHTML,"btnlogin")+17,120)
$id = StringMid($id,1,StringInStr($id,'"')-1)
;-------------------------------------------------------------------------------------------

$oHTTP.Open('GET', $sUrl&$id, True) ;добавим на url полученный ID 
$oHTTP.SetRequestHeader("Host","www.seosprint.net")
$oHTTP.SetRequestHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36")
$oHTTP.SetRequestHeader("Referer",'http://www.seosprint.net/')
$oHTTP.SetRequestHeader("Accept-Encoding","gzip,deflate,sdch")
$oHTTP.SetRequestHeader("Accept-Language","ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4")
$oHTTP.SetRequestHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
$oHTTP.SetRequestHeader("Connection","keep-alive")
$oHTTP.Send()
$oHTTP.WaitForResponse

$sHTML = $oHTTP.Responsetext ;получаем ответ
$headers = $oHTTP.GetAllResponseHeaders()
$Cookie = GetCookie($headers)

;-----------------------------------выдираем 'asklcnt'  для запроса-------------------------
$log_cnt = StringMid($sHTML,StringInStr($sHTML,"asklcnt")+16,100)
$log_cnt = StringMid($log_cnt,1,StringInStr($log_cnt,'"')-1)
;-------------------------------------------------------------------------------------------

$data = '[email protected]&log_pass=5331279533261&log_code=sdgsg&log_cnt='&$log_cnt&'&log_svd=1' ; добавим тот  'asklcnt'

$oHTTP.Open('POST', 'http://www.seosprint.net/proc-service/us-login.php', True) 
$oHTTP.SetRequestHeader("Host","www.seosprint.net")
$oHTTP.SetRequestHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36")
$oHTTP.SetRequestHeader("Referer",'http://www.seosprint.net/'&$id)
$oHTTP.SetRequestHeader("Accept",'*/*')
$oHTTP.SetRequestHeader("Accept-Encoding","gzip,deflate,sdch")
$oHTTP.SetRequestHeader("Accept-Language","ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4")
$oHTTP.SetRequestHeader("Connection","keep-alive")
$oHTTP.SetRequestHeader("Content-lenght",StringLen($data))
$oHTTP.SetRequestHeader("Origin",'http://www.seosprint.net')
$oHTTP.SetRequestHeader("Cookie",$Cookie)
$oHTTP.Send($data) ; отправляем пост запрос


Func GetCookie($headers)
    Local $Cookie_String
    $headers = StringSplit($headers,@LF)
    For $i=1 to $headers[0]
        If StringInStr($headers[$i],"Set-Cookie")>0 Then
           $start         = StringInStr($headers[$i],"Set-Cookie:")+12
           $str           = StringSplit(StringMid($headers[$i],$start),";")
           $Cookie_String&= $str[1]&"; "
        EndIf
    Next
        $Cookie_String        = StringStripWS($Cookie_String,1)
    $Cookie_String        = StringStripWS($Cookie_String,2)
    $Cookie_String        = StringLeft($Cookie_String,StringLen($Cookie_String)-1)
    $COOKIE = $Cookie_String
EndFunc
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
c.rauf.1986

1. Cookie нужно получить из первого запроса и передавать в дальнейшем постоянно! Именно так работает любой браузер!
2. В Cookie есть строка PHPSESS этот параметр важен! Сервер в дальнейшем вас по ней идентифицирует.

Код:
;...
$oHTTP.WaitForResponse
$aCookies = StringRegExp($oHTTP.GetAllResponseHeaders(), '(?<=Set-Cookie:\s).*/', 3)
ConsoleWrite($aCookies[0] & @CR) ; ВАЖНО! Это сессия, её нужно передавать постоянно, начиная со второго запроса!
ConsoleWrite($aCookies[1] & @CR) ; это второе печенье
;...
 
Автор
C

c.rauf.1986

Новичок
Сообщения
27
Репутация
0
Garrett

кроме этого конкретно в моих примерах есть и другие параметры не знаю как их получить и как отправить.
захожу на сайт с браузера ввожу данные и нажимаю на войти.Смотрю на Http Analyzer в cookie есть 1-2 данные которые не знаю как их достать и как послать.

(Request-Line):blum:OST /proc-service/us-login.php HTTP/1.1
Host:www.seosprint.net
Connection:keep-alive
Content-Length:116
Origin:http://www.seosprint.net
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36
Content-lenght:116
Content-type:application/x-www-form-urlencoded
Accept:*/*
Referer:http://www.seosprint.net/0f03f4c399fa150fc2e918aa79a27207d05a7dde22e790a71e29ab25386ea252
Accept-Encoding:gzip,deflate,sdch
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cookie:lang=RU; PHPSESS=vblpf8802o0u9m8q0uij88fni1bfmomf; visitor=1297174; myname=c.rauf1986%40gmail.com; mypass=123456458dfg; mysvdata=1; taskrefresh=1372754167; advmanager=task; hello=193.268(этот параметр я знаю от куда берет 193 параметр х 268 параметр y)

берет от туда
Код:
jQuery(document).ready(function(){
    $(".button-green").click(function(e){
        var oLeft = 0, oTop = 0;
        element = this;
        if (element.className == 'button-green') {
            do {
                oLeft += element.offsetLeft;
                oTop  += element.offsetTop;
            } while (element = element.offsetParent);
            var sx = e.pageX - oLeft + 152;
            var sy = e.pageY - oTop + 261;
            document.cookie="hello="+sx+"."+sy;
        }
    }); 
})


Добавлено:
Сообщение автоматически объединено:

Пожалуйста помогите авторизоваться на сайте seosprint.net
уже 10 дней что мучаюсь.не получается.Капчу можно вводить ложные данные.пусть сервер ответит "вы ввели не правильный код" но хотя бы ответил бы.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
c.rauf.1986 попробуйте так:
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

#Region QUERY #1

ConsoleWrite('> DATA READY ------------------------------------ Запрос №1 ------------------------------------' & @CR)

$sUrl = 'http://www.seosprint.net'
$sMail = 'login'	; логин
$sPass = 'pass' 	; пароль
$sUserAgent = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16'

ConsoleWrite('!URL: ' & $sUrl & @CR)
ConsoleWrite('!Mail: ' & $sMail & @CR)
ConsoleWrite('!Pass: ' & $sPass & @CR)
ConsoleWrite('!UserAgent: ' & $sUserAgent & @CR)

ConsoleWrite('> START QUERY------------------------------------ Запрос №1 ------------------------------------' & @CR)

$oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
$oHTTP.Open("GET", $sUrl, true)
$oHTTP.SetRequestHeader("User-Agent", $sUserAgent)
$oHTTP.SetRequestHeader("Host", "www.seosprint.net")
$oHTTP.SetRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
$oHTTP.SetRequestHeader("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4")
$oHTTP.SetRequestHeader("Connection", "Keep-Alive")
$oHTTP.Send()
$oHTTP.WaitForResponse()

$aCookies = StringRegExp($oHTTP.GetAllResponseHeaders(), 'Set-Cookie:\s([a-zA-Z0-9-=;]+)', 3)
$sCookie = $aCookies[0] &' '& $aCookies[1]
$sHTML = $oHTTP.ResponseText()

$aBtnID = StringRegExp($sHTML, '(?<=class="btnlogin" href=")(.*)"', 3)

#EndRegion QUERY #1

#Region QUERY #2

ConsoleWrite('> DATA READY ------------------------------------ Запрос №2 ------------------------------------' & @CR)

$sReferer = $sUrl &'/'
ConsoleWrite('!Referer: ' & $sReferer & @CR)
ConsoleWrite('!Cookie: ' & StringTrimRight($sCookie, 1) & @CR)
ConsoleWrite('!BtnID: ' & $aBtnID[0] & @CR)

ConsoleWrite('> START QUERY------------------------------------ Запрос №2 ------------------------------------' & @CR)

$oHTTP.Open("GET", $sUrl & $aBtnID[0], true)
$oHTTP.SetRequestHeader("User-Agent", $sUserAgent)
$oHTTP.SetRequestHeader("Host", "www.seosprint.net")
$oHTTP.SetRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
$oHTTP.SetRequestHeader("Accept-Language", "ru-RU,ru;q=0.9,en;q=0.8")
$oHTTP.SetRequestHeader("Referer", $sReferer)
$oHTTP.SetRequestHeader("Cookie", StringTrimRight($sCookie, 1))
$oHTTP.SetRequestHeader("Connection", "Keep-Alive")
$oHTTP.Send()
$oHTTP.WaitForResponse()

$aCookies = StringRegExp($oHTTP.GetAllResponseHeaders(), 'Set-Cookie:\s([a-zA-Z0-9-=;]+)', 3)
$sCookie &= ' '& $aCookies[0]
$sHTML = $oHTTP.ResponseText()
$aCnt = StringRegExp($sHTML, '(?<=name="asklcnt" value=")(.*)"', 3)

#EndRegion QUERY #2

#Region QUERY #3

ConsoleWrite('> DATA READY ------------------------------------ Запрос №3 ------------------------------------' & @CR)

$sReferer = $sUrl & $aBtnID[0]
ConsoleWrite('!asklcnt: ' & $aCnt[0] & @CR)
ConsoleWrite('!Referer: ' & $sReferer & @CR)
ConsoleWrite('!Cookie: ' & StringTrimRight($sCookie, 1) & @CR)

_LoadCaptcha($sReferer, $sCookie)

#Region  Captcha Preview

; ===========================================================================
; Captcha сохраняется в @ScriptDir
; ===========================================================================
$sCaptcha = _Preview()

#EndRegion Captcha Preview

$sParams = 'log_email='& $sMail &'&log_pass='& $sPass &'&log_code='& $sCaptcha &'&log_cnt='& $aCnt[0] &'&log_svd=0'
ConsoleWrite('!Params: ' & $sParams & @CR)

ConsoleWrite('> START QUERY------------------------------------ Запрос №3 ------------------------------------' & @CR)

$oHTTP.Open("POST", $sUrl & '/proc-service/us-login.php', true)
$oHTTP.SetRequestHeader("User-Agent", $sUserAgent)
$oHTTP.SetRequestHeader("Host", "www.seosprint.net")
$oHTTP.SetRequestHeader("Accept", "*/*")
$oHTTP.SetRequestHeader("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4")
$oHTTP.SetRequestHeader("Referer", $sReferer)
$oHTTP.SetRequestHeader("Cookie", StringTrimRight($sCookie, 1))

$oHTTP.SetRequestHeader("Content-type", "application/x-www-form-urlencoded")
$oHTTP.SetRequestHeader("Content-lenght", StringLen($sParams))
$oHTTP.SetRequestHeader("Content-Length", StringLen($sParams))
;~ $oHTTP.SetRequestHeader("Connection", "close")
$oHTTP.SetRequestHeader("Connection", "Keep-Alive")

$oHTTP.Send($sParams)
$oHTTP.WaitForResponse()
_ReportStatus()


#EndRegion QUERY #3

Func _ReportStatus()
	If $oHTTP.Status = 200 Then
		$s_ResValue = $oHTTP.ResponseText()	
		If ($s_ResValue == 'ok') Then
			; При успешной авторизации тут действуем дальше
			ConsoleWrite('!================================================================' & @CR)
			ConsoleWrite('!Переход при успешной авторизации --> location.href = "/index.php"' & @CR)
			ConsoleWrite('!================================================================' & @CR)
			Return $s_ResValue
		EndIf
		If ($s_ResValue == '') Then
			ConsoleWrite('>Запрос на аутентификацию составлен неверно' & @CR)
			Return $s_ResValue
		Else
			ConsoleWrite('>'& $s_ResValue & @CR)
			Return $s_ResValue
		EndIf
	EndIf
EndFunc

Func _LoadCaptcha($s_Refererm, $s_Cookie) ; возвращает бинарный код captch`и

	$oHTTP.Open("GET", $sUrl & '/captcha/captcha-ff/captcha.php?sid=' & Random(), true)
	$oHTTP.SetRequestHeader("User-Agent", $sUserAgent)
	$oHTTP.SetRequestHeader("Host", "www.seosprint.net")
	$oHTTP.SetRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
	$oHTTP.SetRequestHeader("Accept-Language", "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4")
	$oHTTP.SetRequestHeader("Referer", $sReferer)
	$oHTTP.SetRequestHeader("Cookie", StringTrimRight($s_Cookie, 1))
	$oHTTP.SetRequestHeader("Connection", "Keep-Alive")
	$oHTTP.Send()
	$oHTTP.WaitForResponse()

	$bPNG = $oHTTP.ResponseBody()

	$hFile = FileOpen(@ScriptDir &'\captcha.png', 18)
	FileWrite($hFile, $bPNG)
	FileClose($hFile)

	Return $bPNG
EndFunc

Func _Preview()
	
	$h_Form1 = GUICreate("Captcha", 151, 136, 192, 114)
	GUISetBkColor(0xFFFFFF)
	$o_Preview = ObjCreate("Shell.Explorer.2")
	$h_PreviewCtrl = GUICtrlCreateObj($o_Preview, 11, 9, 128, 44)
	$h_Input1 = GUICtrlCreateInput("Введите код", 17, 60, 115, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
	$h_Button1 = GUICtrlCreateButton("Ok", 38, 96, 75, 25)
	$o_Preview.Navigate(@ScriptDir &'\captcha.png')
	$o_Preview.document.body.style.margin = 0
	$o_Preview.document.body.scroll = "no"
	GUISetState(@SW_SHOW)

	While 1
		$n_Msg = GUIGetMsg()
		Switch $n_Msg
			Case $GUI_EVENT_CLOSE
				Exit
			Case $h_Button1
				$s_Captcha = GUICtrlRead($h_Input1)
				If $s_Captcha <> 'Введите код' And $s_Captcha <> '' Then
					ExitLoop
					GUIDelete($h_Form1)
				EndIf
		EndSwitch
	WEnd
	
	Return $s_Captcha
EndFunc
Я на сайте не зарегистрирован, посему проверить не могу.
 
Автор
C

c.rauf.1986

Новичок
Сообщения
27
Репутация
0
огромное спасибо за то что вы помогаете людям.Я за это вам благодарен

Слежу с Analyzer-ом все идет ок но почему то возвращает ошибку
!Error: Запрос на аутентификацию составлен неверно
по моему это ошибку выдает тогда когда сессия не верно.
может сами проверите

E-mail: xxxxxxxxxxxxxxxxxx
Пароль: xxxxxxxxxx
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
c.rauf.1986
Мой вам совет удалите ваши данные! Их можно было в ПМ скинуть.
Хотя, дело ваше :smile:
 
Автор
C

c.rauf.1986

Новичок
Сообщения
27
Репутация
0
спасибо за совет но эти данные создана именно для теста(для вам).
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Исправил код Ответ #7
 
Верх