Все привет!
Пытаюсь сделать авторизацию через guzzle для olx, но почему-ту в результате объекта $response, нужных кук - нет. Самое странное что в логах эти cookie - есть. Еще странная вещь - в логах видно что запрос-ответ выполняется два раза:
В первый раз: видно что, клиент успешно обращается к серверу и сервер успешно возвращает куки авторизации(которые мне нужны).
Во второй раз: видно что, клиент успешно обращается к серверу и сервер успешно возвращает ответ, но уже без нужных мне кук.
Может я просто не до конца понимаю как работает http.
Мне нужны вот эти куки:
< Set-Cookie: PHPSESSID=osidpt9e5v9osb4u393uogcgm7; path=/; domain=.olx.kz; secure; HttpOnly
< Set-Cookie: PHPSESSID=bneuripfur13d87pdpfq4mls65; path=/; domain=.olx.kz; secure; HttpOnly
< Set-Cookie: user_id=50707354; path=/; domain=.olx.kz
< Set-Cookie: remember_login=50707354%3A1490682715%3B891f5cccc163c6ea5e5e5d96918b8c25; expires=Tue, 28-Mar-2017 06:31:55 GMT; Max-Age=1209600; path=/; domain=.olx.kz; secure; HttpOnly
А получаю только:
< Set-Cookie: PHPSESSID=mp6ls3a87t7trsovmbgll6ten5; path=/; domain=.olx.kz; secure; HttpOnly
< Set-Cookie: mobile_default=desktop; path=/; domain=.olx.kz; secure
Лог:
* Hostname www.olx.kz was found in DNS cache
* Trying 10.10.10.10...
* Connected to www.olx.kz (10.10.10.10) port 443 (#0)
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
* subject: jurisdictionC=NL; businessCategory=Private Organization; serialNumber=34243234; C=NL; ST=Hoofddorp; L=Hoofddorp; O=OLX B.V.; OU=Technical Department; CN=ev.horizontals.eu.certificates.naspersclassifieds.com
* start date: Sep 2 00:00:00 2016 GMT
* expire date: Sep 2 23:59:59 2018 GMT
* subjectAltName: www.olx.kz matched
* issuer: C=US; O=thawte, Inc.; CN=thawte EV SSL CA - G3
* SSL certificate verify ok.
> POST /account/?ref%5B0%5D%5Baction%5D=myaccount&ref%5B0%5D%5Bmethod%5D=index HTTP/1.1
Host: www.olx.kz
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: ru,en-US;q=0.7,en;q=0.3
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0
Content-Length: 105
* upload completely sent off: 105 out of 105 bytes
< HTTP/1.1 301 Moved Permanently
< Location: https://www.olx.kz/myaccount/
< X-B: olxkz-wrk04
< X-T: D=143444 t=1489473115037151
< Content-Length: 0
< Content-Type: text/html; charset=UTF-8
< Expires: Tue, 14 Mar 2017 06:31:55 GMT
< Cache-Control: max-age=0, no-cache, no-store
< Pragma: no-cache
< Date: Tue, 14 Mar 2017 06:31:55 GMT
< Connection: keep-alive
< Set-Cookie: PHPSESSID=osidpt9e5v9osb4u393uogcgm7; path=/; domain=.olx.kz; secure; HttpOnly
< Set-Cookie: PHPSESSID=bneuripfur13d87pdpfq4mls65; path=/; domain=.olx.kz; secure; HttpOnly
< Set-Cookie: user_id=50707354; path=/; domain=.olx.kz
< Set-Cookie: remember_login=50707354%3A1490682715%3B891f5cccc163c6ea5e5e5d96918b8c25; expires=Tue, 28-Mar-2017 06:31:55 GMT; Max-Age=1209600; path=/; domain=.olx.kz; secure; HttpOnly
<
* Connection #0 to host www.olx.kz left intact
* Found bundle for host www.olx.kz: 0x55fa40894100 [can pipeline]
* Re-using existing connection! (#0) with host www.olx.kz
* Connected to www.olx.kz (10.10.10.10) port 443 (#0)
> GET /myaccount/ HTTP/1.1
Host: www.olx.kz
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: ru,en-US;q=0.7,en;q=0.3
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0
< HTTP/1.1 301 Moved Permanently
< Location: https://www.olx.kz/account/?ref%5B0%5D%5Baction%5D=myaccount&ref%5B0%5D%5Bmethod%5D=index
< X-B: olxkz-riak03
< X-T: D=13650 t=1489473115574629
< Content-Length: 0
< Content-Type: text/html; charset=UTF-8
< Expires: Tue, 14 Mar 2017 06:31:55 GMT
< Cache-Control: max-age=0, no-cache, no-store
< Pragma: no-cache
< Date: Tue, 14 Mar 2017 06:31:55 GMT
< Connection: keep-alive
< Set-Cookie: PHPSESSID=hc4kdcdo9b34usrduascdrnr17; path=/; domain=.olx.kz; secure; HttpOnly
< Set-Cookie: mobile_default=desktop; path=/; domain=.olx.kz; secure
<
* Connection #0 to host www.olx.kz left intact
* Found bundle for host www.olx.kz: 0x55fa40894100 [can pipeline]
* Re-using existing connection! (#0) with host www.olx.kz
* Connected to www.olx.kz (10.10.10.10) port 443 (#0)
> GET /account/?ref%5B0%5D%5Baction%5D=myaccount&ref%5B0%5D%5Bmethod%5D=index HTTP/1.1
Host: www.olx.kz
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: ru,en-US;q=0.7,en;q=0.3
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0
< HTTP/1.1 200 OK
< Vary: Accept-Encoding
< Content-Encoding: gzip
< X-B: olxkz-riak03
< X-T: D=33272 t=1489473115956761
< Content-Length: 10300
< Content-Type: text/html; charset=UTF-8
< Expires: Tue, 14 Mar 2017 06:31:56 GMT
< Cache-Control: max-age=0, no-cache, no-store
< Pragma: no-cache
< Date: Tue, 14 Mar 2017 06:31:56 GMT
< Connection: keep-alive
< Set-Cookie: PHPSESSID=mp6ls3a87t7trsovmbgll6ten5; path=/; domain=.olx.kz; secure; HttpOnly
< Set-Cookie: mobile_default=desktop; path=/; domain=.olx.kz; secure
<
* Connection #0 to host www.olx.kz left intact
Код:
<?php
namespace app\components\olx;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\ClientException;
class Auth {
public $baseUrl = 'https://www.olx.kz';
public $userAgent;
private $_client;
public function __construct()
{
$this->_client = new Client([
'base_uri' => $this->baseUrl,
]);
}
public function login($login, $password)
{
$res = null;
try {
$res = $this->_client->post(
'account/?ref[0][action]=myaccount&ref[0][method]=index#login',
[
'headers' => [
'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Encoding' => 'gzip, deflate, br',
'Accept-Language' => 'ru,en-US;q=0.7,en;q=0.3',
'Upgrade-Insecure-Requests' => '1',
'User-Agent' => $this->userAgent,
],
'form_params' => [
'login' => [
'email_phone' => $login,
'password' => $password,
'remember-me' => 'on',
]
],
'debug' => true,
]
);
} catch (ClientException $e) {
echo $e->getMessage();
return false;
}
var_dump($res->getHeader('Set-Cookie'));
//print_r($this->_client->getHeaders());
//print_r($res->getHeaders());
echo $res->getBody();
}
}
Судя по всему вам нужно авторизоваться и в дальнейшем выполнить некоторые действия авторизованным, так? Тогда всё просто, сначала нужно сконфигурировать клиент с использованием cookie:
public function __construct()
{
$this->_client = new Client([
'base_uri' => $this->baseUrl,
'cookies' => true,
]);
}
После первого запроса (авторизации) $this->_client
уже будет содержать те cookies, которые сервер вам отдал во время его и вы сможете делать авторизованные запросы этим клиентом.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В запросе к базе данных используется GROUP_CONCATЧтобы увеличить количество символов для выводимой строки, нужно использовать
Если через Notepad++ подключаюсь по ftp/sftp к серверу, то файлы открываются в кодировке, вкоторой они на сервере и я могу работать с ними, сохранять...
Система NGINX без APACHE в фале phpini прописал include_path = "