Что нового

авторизоваться через winhttprequest используя куки с IE

c.rauf1986

Новичок
Сообщения
14
Репутация
0
Здравствйте Всем кто поможет заранее блогадарень.

Нужна авторизация за сайте www. seosprint точка net с помощью WinHTTP.WinHTTPRequest но к сожелению там стоит recaptcha гугловский.
Подумал такой вариант с помошью _IECreate авторизоваться вручную а затем брать куки и использовать в WinHTTP.WinHTTPRequest но все таки не получается.

Очень очень нужна помошь жду вашего ответа.


Код:
#include <IE.au3>

Call(LoginSeo)

Func LoginSeo()


   $oIE = _IECreate('http://seosprint.net/')

   Sleep(30000)

   $oDoc = _IEDocGetObj($oIE)
   $iCookies = $oDoc.cookie
   _IEQuit($oIE)

   Global $oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')

   ;******************************************************
   $oHTTP.Open("GET", 'http://www.seosprint.net/index.php', true)
   $oHTTP.SetRequestHeader("Accept", "text/html, application/xhtml+xml, image/jxr, */*")
   $oHTTP.SetRequestHeader("Accept-Language", "en-US,en;q=0.8,ru;q=0.5,az-Latn;q=0.3")
   $oHTTP.SetRequestHeader("Connection", "Keep-Alive")
   $oHTTP.SetRequestHeader("Referer", "http://www.seosprint.net/")
   $oHTTP.SetRequestHeader("Cookie", $iCookies)
   $oHTTP.Send()
   $oHTTP.WaitForResponse()
   ;******************************************************
   If $oHTTP.Status = 200 Then
	  $sHTML = $oHTTP.ResponseText()
	  ConsoleWrite($sHTML)
	  Exit
   EndIf

EndFunc
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Пробуйте еще передавать User-Agent
$oIe.document.parentWindow.navigator.userAgent
 
Автор
C

c.rauf1986

Новичок
Сообщения
14
Репутация
0
inververs сказал(а):
Пробуйте еще передавать User-Agent
$oIe.document.parentWindow.navigator.userAgent

пробовал так
Код:
$sUserAgent = $oIe.document.parentWindow.navigator.userAgent
$oHTTP.SetRequestHeader("User-Agent", $sUserAgent)


не получилась.
и еще получаю куки PHPSESS=8t3f13a8vnbc1osckh9c4k8osnjknb63
а это кусок из куки.С помощью HttpAnalyzer получаю куки PHPSESS=8t3f13a8vnbc1osckh9c4k8osnjknb63; visitor=*******; honey=782; shadow=****************; myname=****************; mycnt=*********************
может проблема в этом.
Пожолуйста помогите разобраться.Буду благодарень.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
c.rauf1986 сказал(а):
Нужна авторизация за сайте www. seosprint точка net с помощью WinHTTP.WinHTTPRequest

Лучше не надо, не старайтесь, к хорошему это не приведёт точно.
 
Автор
C

c.rauf1986

Новичок
Сообщения
14
Репутация
0
alex33 сказал(а):
Лучше не надо, не старайтесь, к хорошему это не приведёт точно.

Зачем вы так думаете?

Это очень мне важно уже несколько дней мучаюсь нечего не получается.
 
Автор
C

c.rauf1986

Новичок
Сообщения
14
Репутация
0
Неужели на этом форуме нет такой человек который сможет решить этот вопрос.Это проблема для меня немножко сложновато но знаю что таких как вы это не проблема

Пожалуйста помогите мне разобраться
 

Sαuron

Новичок
Сообщения
45
Репутация
1
Там скорее всего скрипт стоит, который пока не отработает, не авторизует (типа защиты от ботов Cloud Flare). Скрипт только в браузере может отработать, а этим объектом только посылать запросы и принимать текст можно.
 
Автор
C

c.rauf1986

Новичок
Сообщения
14
Репутация
0
Sαuron сказал(а):
Там скорее всего скрипт стоит, который пока не отработает, не авторизует (типа защиты от ботов Cloud Flare). Скрипт только в браузере может отработать, а этим объектом только посылать запросы и принимать текст можно.

ну да я это знаю.Там стоит google recapcha.его обходить с помощью winhttprequest немного сложно мне и поэтому решил сначала зайти (авторизоваться) с браузера вручную далее через winhttp отправить запрос используя куки взятых с броузера но к сожелению и это почему то не работает.Именно в этом хочу чтобы помогали мне да я не говорю что надо взолмать recaptcha/
 
Автор
C

c.rauf1986

Новичок
Сообщения
14
Репутация
0
Открыл analyzer чтобы проверить что же передает autoit.exe и увидел то что сервер каким то образом понимает что эти данные взят из другого браузера и тут же перенаправляет(redirect) logout.php на картинке видно все.
Тем кто не прочитал на вверху.Я с браузера вручную авторизоваюсь потом биру куки,юзер агент,и реферер открываю сайт с помощью winhttprequest посылая эти данные.но все таки как показано на скрине сервер не позваляет.перенаправляет на главную страницу.
 

Вложения

  • Screenshot_2.jpg
    Screenshot_2.jpg
    192 КБ · Просмотры: 22

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Есть куки которые нельзя получить через document.cookie. Может быть их как раз и не передает ваш скрипт.
 
Автор
C

c.rauf1986

Новичок
Сообщения
14
Репутация
0
inververs сказал(а):
Есть куки которые нельзя получить через document.cookie. Может быть их как раз и не передает ваш скрипт.

пожалуйста можете помочь а как можно ее получить?
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Точно не знаю, но можете попробовать доставать их из файлов куков. Раньше Chrome хранил их в базе данных sqlite.


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

Вот функция, раньше работала, сейчас не знаю. Нужно передавать имя хоста и название кук.
Базу можно посмотреть sqlite менеджером.

Код:
Func _Chrome_Cookie_Get($host_key, $name = 'PHPSESSID')
	_SQLite_Startup()
	If @error Then
		MsgBox(0, "SQLite Error", "SQLite3.dll Can't be Loaded!")
		Exit -1
	EndIf
	Local $cookie_file = @LocalAppDataDir & '\Google\Chrome\User Data\Default\Cookies'

	Local $hBd = _SQLite_Open($cookie_file)
	Local $hQuery, $aRow, $sMsg
	_SQLite_Query($hBd, 'Select value From cookies WHERE host_key="' & $host_key & '" AND name = "' & $name & '"', $hQuery) ; the query
	While _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK
		$sMsg &= $aRow[0]
	WEnd
	_SQLite_Close($hBd)
	_SQLite_Shutdown()
	Return $sMsg
EndFunc   ;==>_Chrome_Cookie_Get
 
Автор
C

c.rauf1986

Новичок
Сообщения
14
Репутация
0
inververs сказал(а):
Точно не знаю, но можете попробовать доставать их из файлов куков. Раньше Chrome хранил их в базе данных sqlite.


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

Вот функция, раньше работала, сейчас не знаю. Нужно передавать имя хоста и название кук.
Базу можно посмотреть sqlite менеджером.

Код:
Func _Chrome_Cookie_Get($host_key, $name = 'PHPSESSID')
	_SQLite_Startup()
	If @error Then
		MsgBox(0, "SQLite Error", "SQLite3.dll Can't be Loaded!")
		Exit -1
	EndIf
	Local $cookie_file = @LocalAppDataDir & '\Google\Chrome\User Data\Default\Cookies'

	Local $hBd = _SQLite_Open($cookie_file)
	Local $hQuery, $aRow, $sMsg
	_SQLite_Query($hBd, 'Select value From cookies WHERE host_key="' & $host_key & '" AND name = "' & $name & '"', $hQuery) ; the query
	While _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK
		$sMsg &= $aRow[0]
	WEnd
	_SQLite_Close($hBd)
	_SQLite_Shutdown()
	Return $sMsg
EndFunc   ;==>_Chrome_Cookie_Get





пробовал не получилось даже внедрить в SQL

Код:
; SQLite.dll version must match

#include <MsgBoxConstants.au3>
#include <SQLite.au3>
#include <SQLite.dll.au3>

$sCookie = _Chrome_Cookie_Get("5.187.7.10:80", "PHPSESS=ga7hukoa21o6pkgbmbehrsmu1089tpd1")

ConsoleWrite($sCookie & @CRLF)

Func _Chrome_Cookie_Get($host_key, $name)
    _SQLite_Startup()
    If @error Then
        MsgBox(0, "SQLite Error", "SQLite3.dll Can't be Loaded!")
        Exit -1
    EndIf
    Local $cookie_file = @LocalAppDataDir & '\Google\Chrome\User Data\Default\Cookies'

    Local $hBd = _SQLite_Open($cookie_file)
    Local $hQuery, $aRow, $sMsg
    _SQLite_Query($hBd, 'Select value From cookies WHERE host_key="' & $host_key & '" AND name = "' & $name & '"', $hQuery) ; the query
    While _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK
        $sMsg &= $aRow[0]
    WEnd
    _SQLite_Close($hBd)
    _SQLite_Shutdown()
    Return $sMsg
EndFunc   ;==>_Chrome_Cookie_Get
 
Автор
C

c.rauf1986

Новичок
Сообщения
14
Репутация
0
ТЕМА РЕШЕНО

просто надо было заголовки взять и без ошибок поставить в скрипт и только куки из IE

Код:
...
   $oInternetExplorer = _IECreate($sUrl & '/')

   $oDoc = _IEDocGetObj($oInternetExplorer)
   $sCookie = $oDoc.cookie
   ...
 
Автор
C

c.rauf1986

Новичок
Сообщения
14
Репутация
0
Я почти у цели

осталось только лишь
взял с httpanalyzer все данные включая user-agent только куки взял с помощью

$oIE = ObjCreate("InternetExplorer.Application")
$oIE.Visible = True
$oDoc = _IEDocGetObj($oIE)
$oDoc.cookie

все отлично работает потом взял user-agent с chrome уже не заходит в кабинет(не авторизовается). посмотрел с аналайзером посылает на logout.php и все.
2.то что первый вариант работает у меня отпрвил знакомому у него не работает всмысле не заходит на кабинет(не авторизовается).
раньше я думал что проблема в куки но вижу что проблема в user-agent.Потому что я у него взял куки и со своего компа попытался залогинить без проблем залогинился.
Короче как правильно взять user-agent чтобы посылая его с winhttprequest не было проблем при авторизации
 
Автор
C

c.rauf1986

Новичок
Сообщения
14
Репутация
0
Значит так
программа работает по схеме

1.открывается браузер
2.пользователь заходит в свой акк
3.скрипт бирет куки с данными (с internet explorer)
4.заходит в whoishostingthis*com/tools/user-agent/
5.бирет user-agent (почему то именно этот (internet explorer) работает(авторизовается) а не взятых из хром и др.)
6.посылаем WinHttpRequest со всеми данными
и так далее

проблема в том что после WinHttpRequest
должно получиться html кабинета пользователя.только у меня почему то получается зайти в акк а другие не могут зайти.в ответ многие получает или главную страницу сайта где пользователь еще не авторизована или интересный ответ.謟
если получается главная страница то понимаем что то не так отправлено хотя и это не должно быть потому что один и тот же вариант у меня работает без проблем.а то что этот 謟 ответ это слишком.

Пожалуйста помогите решить проблему
 
Автор
C

c.rauf1986

Новичок
Сообщения
14
Репутация
0
проблем решен в другой ветке

http://autoit-script.ru/index.php?topic=22728.msg132157#msg132157
 
Верх