Привет, я пытаюсь войти на en.forgeofempires.com с помощью http-запроса. Я действительно не знаю, как это сделать, но добился значительных успехов.
Вот информация из сети в chrome
Request Headers:
:authority: en.forgeofempires.com
:method: POST
:path: /glps/login_check
:scheme: https
accept: application/json, text/plain, */*
accept-encoding: gzip, deflate, br
accept-language: en-US,en;q=0.9,nb;q=0.8,sv;q=0.7
content-length: 85
content-type: application/x-www-form-urlencoded; charset=UTF-8
cookie: metricsUvId=b3101c98-4f26-4614-95a7-fb26978130f9; _fbp=fb.1.1564063487771.1575313619;
ig_conv_last_site=https://en13.forgeofempires.com/game/index; glps_exp_dc=ag1185a;
portal_tid=1595784514678-50397; device_view=full;
portal_ref_url=https://en0.forgeofempires.com/page/;
PHPSESSID=mh81candht9492apd1nb71fiatsmr6p28759fdrcdtelr7u9; XSRF-TOKEN=gdC1RBZsCkekiR6Z-
1EVetD3-
skzAvLg7zSB11YjBXc; portal_ref_session=1; portal_data=portal_tid=1595784514678-
50397&portal_ref_url=https://en0.forgeofempires.com/page/&portal_ref_session=1;
fs_cr=1596385201458
origin: https://en.forgeofempires.com
referer: https://en.forgeofempires.com/glps/iframe-login
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: same-origin
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/84.0.4147.105 Safari/537.36
x-requested-with: XMLHttpRequest
x-xsrf-token: gdC1RBZsCkekiR6Z-1EVetD3-skzAvLg7zSB11YjBXc
Form Data
login[userid]: user
login[password]: pass
login[remember_me]: false
view source:
login%5Buserid%5D=user&login%5Bpassword%5D=pass&login%5Bremember_me%5D=false
Вот ответ, который получает Google
cache-control: max-age=0, must-revalidate, private
content-encoding: gzip
content-type: application/json
date: Sun, 02 Aug 2020 16:20:07 GMT
server: nginx
set-cookie: PHPSESSID=smq4rrp2gtp7an4t5vqsjd0npbbk7tumo8n04thkk8nbuer3; path=/; secure; HttpOnly;
SameSite=Lax
set-cookie: glps_remember_me=deleted; expires=Sat, 03-Aug-2019 16:20:06 GMT; Max-Age=0; path=/;
secure; httponly
status: 200
x-said: 549565
В autoit у меня есть этот код для отправки запроса:
#include "WinHttp.au3"
Opt("MustDeclareVars", 1)
; !!!Note that this example will fail because of invalid username and password!!!
; Authentication data
Global $sUsername = "UserName"
Global $sPassword = "Password"
; Address
Global $sAddress = "en.forgeofempires.com"
; Initialize and get session handle
Global $hOpen = _WinHttpOpen()
; Get connection handle
Global $hConnect = _WinHttpConnect($hOpen, $sAddress)
; Request
Global $hRequest = _WinHttpOpenRequest($hConnect, _
"POST", _ ; verb
"/glps/login_check", _ ; target
Default, _ ; version
"en.forgeofempires.com", _ ; referer
"*/*") ; accept
; Send it
_WinHttpSendRequest($hRequest, _
"Content-Type: application/x-www-form-urlencoded" & @CRLF, _
"login%5Buserid%5D=user&login%5Bpassword%5D=pass&login%5Bremember_me%5D=false")
; Wait for the response
_WinHttpReceiveResponse($hRequest)
; See what's returned
If _WinHttpQueryDataAvailable($hRequest) Then
Global $sHeader = _WinHttpQueryHeaders($hRequest)
ConsoleWrite($sHeader & @CRLF)
; Check if proper cookie is given
If StringInStr($sHeader, 'Set-Cookie: uchome_loginuser=' & $sUsername) Then
MsgBox(0, "", "Login success")
Else
MsgBox(0, "", "Login failed")
EndIf
Else
MsgBox(48, "Error", "Site is experiencing problems.")
EndIf
; Close open handles and exit
_WinHttpCloseHandle($hRequest)
_WinHttpCloseHandle($hConnect)
_WinHttpCloseHandle($hOpen)
И вот ответ, который я получаю в своей консоли
HTTP/1.1 200 OK
Cache-Control: max-age=0, must-revalidate, private
Connection: keep-alive
Date: Sun, 02 Aug 2020 16:56:14 GMT
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
Server: nginx
Set-Cookie: XSRF-TOKEN=8b33ZwZLqTnxwlK6wTPbUN_gKcNGTa1y1AxxiRk0gEk; path=/; secure
Set-Cookie: glps_exp_dc=deleted; expires=Sat, 03-Aug-2019 16:56:13 GMT; Max-Age=0; path=/; httponly
X-SaId: 549234
Я просмотрел различные ответы в chrome и консоль, что этот x-xsrf-токен может быть проблемой с моей причиной кода в chrome Он отправлен в заголовке запроса но в autoiit я получаю этот токен в заголовке ответа ??? Не уверен, где я ошибаюсь, но похоже, что сервер игнорирует пользователя и передаю, что я отправляю любую помощь, чтобы мне удалось успешно войти в мою учетную запись, было бы очень удобно