Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Отправка данных формы CURL

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
На стороннем сайте, есть форма на которой есть checkbox и button. При активации checkbox и нажатии button форма отправляет вот это:

Код:
 
X-Requested-With = XMLHttpRequest
__RequestVerificationToken = "Тут токен"
comment = "Не обязательно заполнять"    
result = "Не обязательно заполнять"    
resultDrive = "Не обязательно заполнять"
valid = true
valid = false
 

Через некоторое время получаем ответ:

Код:
 
{"success":true}
 

 
Пытаюсь сделать так:
 

Код:
 
    $cookie_box = dirname(__FILE__).'/cookies/yandex-cookie.txt';
     
    $curl = curl_init('******************');
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_POST, 0);
    curl_setopt($curl, CURLOPT_HEADER, 1);
    curl_setopt($curl, CURLOPT_COOKIESESSION, true);
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_box);
    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_box);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3');
     
    $html = curl_exec($curl);
    $k = explode(******************', $html);
    $key = explode('******************', $k[1]);
         
    $common_gett = curl_init('******************');
    curl_setopt($common_gett, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($common_gett, CURLOPT_POST, 1);
    curl_setopt($common_gett, CURLOPT_HEADER, 0);
    curl_setopt($common_gett, CURLOPT_POSTFIELDS,"X-Requested-With=XMLHttpRequest&__RequestVerificationToken=$key[0]&comment=&result=&resultDriver=&valid=true");
    curl_setopt($common_gett, CURLOPT_COOKIEJAR, $cookie_box);
    curl_setopt($common_gett, CURLOPT_COOKIEFILE, $cookie_box);
    curl_setopt($common_gett, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($common_gett, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3');
    $html = curl_exec($common_gett);
 

 
Токен получаем все в порядке, а вот вторая часть чего то не отрабатывает (((

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 04:49 13-09-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011
пережевывали уже сотню раз, снова создали тему - зачем??
Имитация браузера-запрос методом post
включите дебаг и смотрите что отправляется и в каком виде.

Цитата:
curl_setopt($common_gett, CURLOPT_POSTFIELDS,"X-Requested-With=XMLHttpRequest&__RequestVerificationToken=$key[0]&comment=&result=&resultDriver=&valid=true");  

отдавать тут лучше массив, а не строку. возможен вариант, что неправильно закодируете данные.

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 04:55 13-09-2018
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
 
    $data = array("X-Requested-With" => "XMLHttpRequest", "__RequestVerificationToken" => $key[0], "comment" => "", "result" => "", "resultDriver" => "", "valid" => "true");
    $data_string = json_encode($data);
         
    $common_gett = curl_init('**************************');
    curl_setopt($common_gett, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($common_gett, CURLOPT_POST, 1);
    curl_setopt($common_gett, CURLOPT_HEADER, 0);
    curl_setopt($common_gett, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($common_gett, CURLOPT_COOKIEJAR, $cookie_box);
    curl_setopt($common_gett, CURLOPT_COOKIEFILE, $cookie_box);
    curl_setopt($common_gett, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($common_gett, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($common_gett, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3');
    curl_setopt($common_gett, CURLOPT_TIMEOUT,40);
    $html = curl_exec($common_gett);
 

 
Все равно не срабатывает, может на сайте защита какая стоит?
 

Код:
 
HTTP/1.1 400 Bad Request
Server: nginx/1.12.2
Date: Thu, 13 Sep 2018 02:13:34 GMT
Content-Length: 0
Connection: keep-alive
 

 
Ответ сервера

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 05:07 13-09-2018 | Исправлено: koreets2011, 05:14 13-09-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011

Цитата:
Ответ сервера

нет, если 400, то скорее всего данные в неправильном виде.

Цитата:
X-Requested-With=XMLHttpRequest

это часть заголовка, а не отправляемые post данные

Код:
curl_setopt($common_gett, CURLOPT_HTTPHEADER, ["X-Requested-With: XMLHttpRequest"]);

туда же можно впихнуть и UA

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 05:25 13-09-2018
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не получается. Снова 400.
Вот скрин дебага в момент отправки формы
 
Скрин

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 05:42 13-09-2018 | Исправлено: koreets2011, 05:45 13-09-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011
я не об этом дебаге, а дебаге CURL запроса, когда видно что отправляется и в каком виде.
заголовки смотрите, что там еще отправляется.

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 06:06 13-09-2018
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Вот код, тут ведь все в пределах одной сессии происходит, верно?  

Код:
 
$cookie_box = dirname(__FILE__).'/cookies/yandex-cookie.txt';
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curl, CURLOPT_POST, 0);
    curl_setopt($curl, CURLOPT_HEADER, 1);
    curl_setopt($curl, CURLOPT_COOKIESESSION, 1);
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_box);
    curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_box);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3');
     
    $html = curl_exec($curl);
    $k = explode('__RequestVerificationToken" type="hidden" value="', $html);
    $key = explode('" />', $k[1]);
     
    $data = array("__RequestVerificationToken" => "$key[0]", "comment" => "", "result" => "", "resultDriver" => "", "valid" => "true");
    $data_string = json_encode($data);
         
    $common_gett = curl_init($url);
    curl_setopt($common_gett, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($common_gett, CURLOPT_COOKIEJAR, $cookie_box);
    curl_setopt($common_gett, CURLOPT_COOKIEFILE, $cookie_box);
    curl_setopt($common_gett, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($common_gett, CURLOPT_POST, 1);
    curl_setopt($common_gett, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($common_gett, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($common_gett, CURLOPT_HTTPHEADER, array(
        "Content-Type: application/x-www-form-urlencoded; charset=UTF-8",
        "Accept: */*",
        "X-Requested-With: XMLHttpRequest"
    ));
    curl_setopt($common_gett, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3');
    $result = curl_exec($common_gett);
     
    echo $result;
 

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 06:58 13-09-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011
утомляет это топтание на пустом месте.  
повторюсь - включаем дебаг в курле, смотрим в каком виде все отправляется, сравниваем с тем, что в браузере, находим разницу. в том же браузере (в Хроме как минимум) можно щелкнуть на запросе правой кнопкой и скопировать все как если выполнялось через wget или curl в командной строке, и сравнить заголовки, данные и так далее.

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 07:02 13-09-2018
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Заголовки из браузера:

Код:
 
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Connection: keep-alive
Content-Length: 311
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Cookie: _ym_uid=1531380871165522426; mda=0; yandexuid=6253265291531380830; L=SXt2CXFIZURccUJFAX52XXwDVnZhX30GHTNJHRowJD8DMSkkfgU=.1531380837.13558.324898.0f6449af52e8f23837878354cf9e0b24; yandex_login=taxiprestige70; my=YwA=; i=DK3gH/y5r9vJZizHv8BM40Ss6MFEioqIPRTk0e85xd5NJHlHqt8AEPYw1onVWIA2ozH+1piIcfv9CpU8cgf2Di5mAmc=; yabs-frequency=/4/0000000000000000/z4smS2Sn_F___vvDi70aCI4bLB1m9350a5EmS0yn_F___v5Ai73NCFp___-HKx1m934Wb4gmSBim_F___m00/; yandex_gid=67; yp=1846740830.yrts.1531380830#1846740830.yrtsi.1531380830#1846740837.udn.cDp0YXhpcHJlc3RpZ2U3MA%3D%3D#1551464910.szm.1:1280x1024:1280x958#1536742092.csc.1#1536655759.shlos.1#1536655759.los.1#1536655759.losc.0#1538288902.ygu.1; _ym_d=1535696914; Session_id=3:1536654035.5.0.1531380837554:cqHQww:7a.1|586329677.0.2|187382.333003.QpWTChskXSEsTas7WNQgtjf84zU; sessionid2=3:1536654035.5.0.1531380837554:cqHQww:7a.1|586329677.0.2|187382.674551.CuxWtSrca3UpK3CA1GytQ_r-uoI; .AspNetCore.Culture=c%3Dru%7Cuic%3Dru; culture_set=1; .AspNetCore.Antiforgery.uGYhvnAGzi0=CfDJ8Pj1S8DdfZlAigez8TXM6pDh97nQfP1Pi3J7LpzqH64DOxkd2KWrncy8_1VPsQx1sbAlXmWwcGWhLV-LHrRkLuMI_3dLSOcIdr7XqCbuH7G5qEG9V_VVFgD9WkKNh-NQ8P9dIJrygkr9R1PNmEAi5Zg; _ym_isad=1; _ym_visorc_44292669=w; YandexPassport.Auth=CfDJ8Pj1S8DdfZlAigez8TXM6pD60sVQcLAwPvmRiCOBR%2FRrUcpE8TtHLHMlJ5GtVujHEmK04wwwz%2BwfYGwRI7tV1MsxPmckHxB0qV1t9pq6uvGdgJLFr4Z53l8vfhi5APhPYhknNUxK9Wyg83Jxh%2F1paXZFOeY4JGPupKdgVO2HA%2Bq5rBUsvUnZURQ6Wun4a4IR42IicAtekSZnj2i1ZPCrCCo3%2FoxS8sPCTQKT2vV2NQZVz4HnPCOV0dcRrNrvXTyra5%2FXEEU16vpeIMUuuME%2BBe0wo5S4IOm1xXh7JTabJKnC0XP9jtzv5C9DCkvka%2FjKJC40N1OtgzscuMxVrCXgJl4%3D
DNT: 1
Host: lk.taximeter.yandex.ru
Origin: https://lk.taximeter.yandex.ru
Referer: https://lk.taximeter.yandex.ru/support/compensation/3a72bd81869a4724a65149df8d43645c
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
X-Requested-With: XMLHttpRequest
 

передача браузером

Код:
 
valid: true
result:
resultDriver:
comment:
__RequestVerificationToken: CfDJ8Pj1S8DdfZlAigez8TXM6pDBXALSSVq13Yjc-3zWaEoGTv_0ThnpaQdbRE4Ch4htMFsrWVKB7wHILuRStrRUeXtmcuKTk8G8vNXSWAPkX0jhghSuzEbmJ6psyPqg4wQQhbiBWAXRDCWmaMismr9wD7Jje6mKtXAl7_TMs5PotPfc3i-JDQJ2MNuEaLsujV2QHQ
valid: false
X-Requested-With: XMLHttpRequest
 

 
 
Заголовки CURL
 

Код:
 
POST /support/compensation/234f789ed31c4a56a675a8ce0311efa1 HTTP/1.1
Host: lk.taximeter.yandex.ru
Cookie: .AspNetCore.Antiforgery.uGYhvnAGzi0=CfDJ8Pj1S8DdfZlAigez8TXM6pDfvSNwjDPkpOinZi32cpkr2pBSNcsqt6sPxV4L-ZSqDADNYYJ9w0pEPrLu1QaecDHo_pFeQ1kJvaDdfOTt4dDODkljtet-xLOBl8U-4-rDIESiqjmbDD6PXrPsoV1jXa4; .AspNetCore.Culture=c%3Dru%7Cuic%3Den; YandexPassport.Auth=CfDJ8Pj1S8DdfZlAigez8TXM6pAt8bV5dvr4wukcBtZQMczj3q2GRtSiApQ5UhC6TajzeWnhLMus%2FU3RFOXhkAM0fVky7F%2BGRBWVTEu%2BHkOKKVzfflUY0ovwvbsyITW%2FliDj6kezMvoxbPIxFabzOC7LcZdSeCn2u0rxNlGJIWgJhKCH%2F1kAoHLw2Aqq46RWPhxPX5oyUKBxQzJ8oW5Yptba7j%2BvxC2zgar1SZJxZ6qqcUzIPwmucxBBk3ezk0Os4lJEwzEvDipTdpsLN9hVjI3XXjTTHEB3eDM0hIkTr4g%2BPjp5ObnYoJVIDVH77CQWLdAwIQ%3D%3D; culture_set=1; L=YQBZemVaVERtbUNtZXZWAWBlZUt3UVpSXAcdAlM7KU94.1536661933.13619.314574.a9cd4659a6f65d26fdea46a8998a6f9b; Session_id=3:1536661933.5.0.1521090785778:cRgcHw:43.1|203447186.15571148.2.2:15571148|187386.770973.Hmpceu4OLAJu1BcCmWngcaM5aWY; sessionid2=3:1536661933.5.0.1521090785778:cRgcHw:43.1|203447186.0.2|187386.705813._HGO6Gwb9hyDJqd2E3R9jNHp_TU; yandex_login=koreets61; yandexuid=751267061521090785; yp=1852021933.udn.cDprb3JlZXRzNjE%3D
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Connection: keep-alive
Content-Length: 311
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
DNT: 1
Origin: https://lk.taximeter.yandex.ru
Referer: https://lk.taximeter.yandex.ru/support/compensation/234f789ed31c4a56a675a8ce0311efa1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
X-Requested-With: XMLHttpRequest
 

передача параметров CURL

Код:
 
X-Requested-With "XMLHttpRequest"
__RequestVerificationToken "CfDJ8Pj1S8DdfZlAigez8TXM6pDvPmQXLWGCDlEnWCeJJJ3JJYZT-4H6ZQ0Op_DIa0a4IRIA8Ib4AIiuFB3FQFviYbBeG6LlcQt10LwQ1g4v8MSo44qR0AscZ4y8w1K_VTREk_ZOrbI50VeAsdHnR5mSMAiNefqAA3gtCpea7kKF8akusM8zNccE6vcIEMh0B4wrYQ"
comment ""
result ""
resultDriver ""
valid "true"
 

 
Что еще нужно, что-бы понять почему не работает?

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 07:24 13-09-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011

Цитата:
Заголовки CURL

как смотрели? когда я говорил включить дебаг курла я имел в виду это, а не копирование запроса из браузера - он просто для визуального сравнения.

Код:
curl_setopt($handle, CURLOPT_VERBOSE, true);
 
$verbose = fopen('php://temp', 'w+');
curl_setopt($handle, CURLOPT_STDERR, $verbose);
 
....
$result = curl_exec($handle);
if ($result === FALSE) {
    printf("cUrl error (#%d): %s<br>\n", curl_errno($handle),
           htmlspecialchars(curl_error($handle)));
}
 
rewind($verbose);
$verboseLog = stream_get_contents($verbose);
 
echo "Verbose information:\n<pre>", htmlspecialchars($verboseLog), "</pre>\n";


Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 07:32 13-09-2018
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Это первая часть CURL так сказать, а вот вторая там где передача параметров должна быть пусто.

Код:
 
*   Trying 2a02:6b8::1:140...
* TCP_NODELAY set
*   Trying 87.250.251.140...
* TCP_NODELAY set
* Connected to lk.taximeter.yandex.ru (87.250.251.140) port 443 (#0)
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* NPN, negotiated HTTP1.1
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* Server certificate:
*  subject: C=RU; O=Yandex LLC; OU=ITO; L=Moscow; ST=Russian Federation; CN=*.yandex.rostaxi.org
*  start date: Nov  9 10:55:16 2016 GMT
*  expire date: Nov  9 10:55:16 2018 GMT
*  subjectAltName: host "lk.taximeter.yandex.ru" matched cert's "*.taximeter.yandex.ru"
*  issuer: C=RU; O=Yandex LLC; OU=Yandex Certification Authority; CN=Yandex CA
*  SSL certificate verify ok.
> GET /support/compensation/234f789ed31c4a56a675a8ce0311efa1 HTTP/1.1
Host: lk.taximeter.yandex.ru
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
Accept: */*
Cookie: L=YQBZemVaVERtbUNtZXZWAWBlZUt3UVpSXAcdAlM7KU94.1536661933.13619.314574.a9cd4659a6f65d26fdea46a8998a6f9b; Session_id=3:1536661933.5.0.1521090785778:cRgcHw:43.1|203447186.15571148.2.2:15571148|187386.770973.Hmpceu4OLAJu1BcCmWngcaM5aWY; sessionid2=3:1536661933.5.0.1521090785778:cRgcHw:43.1|203447186.0.2|187386.705813._HGO6Gwb9hyDJqd2E3R9jNHp_TU; yandex_login=koreets61; yandexuid=751267061521090785; yp=1852021933.udn.cDprb3JlZXRzNjE%3D
 
< HTTP/1.1 200 OK
< Server: nginx/1.12.2
< Date: Thu, 13 Sep 2018 05:18:06 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Vary: Accept-Encoding
< Vary: Accept-Encoding
< Cache-Control: no-cache, no-store
< Pragma: no-cache
* Added cookie YandexPassport.Auth="CfDJ8Pj1S8DdfZlAigez8TXM6pAD5rl2iApELFxs9iyIx%2Bzm9zg4X9ff93C7C3wm70g13z9pFZbcxPEixBFwUKCz5KOf4v6eoARq9vgcPaAYbblFWseE3jBjVdVRppACLuyd2%2Bl%2BZk3Jhcr9jmTsUN8juheb2DdJqAKXJY37RZ0KY8wwn59EY1AUl3AGpR%2FvV1IS%2FBHsw38HixZZOpRfEr6gEHvdAY%2FMYe0o7jO6U%2B0uqJWYPEYCTAzvc9iJV6VCKUGsE60q3Vpl2%2BKqwgbn3h9IZ3DkereErmyDFN4L1%2FfS%2Ffp06zdRGQ8ba%2B54uXmUiDPomw%3D%3D" for domain lk.taximeter.yandex.ru, path /, expire 1536816066
< Set-Cookie: YandexPassport.Auth=CfDJ8Pj1S8DdfZlAigez8TXM6pAD5rl2iApELFxs9iyIx%2Bzm9zg4X9ff93C7C3wm70g13z9pFZbcxPEixBFwUKCz5KOf4v6eoARq9vgcPaAYbblFWseE3jBjVdVRppACLuyd2%2Bl%2BZk3Jhcr9jmTsUN8juheb2DdJqAKXJY37RZ0KY8wwn59EY1AUl3AGpR%2FvV1IS%2FBHsw38HixZZOpRfEr6gEHvdAY%2FMYe0o7jO6U%2B0uqJWYPEYCTAzvc9iJV6VCKUGsE60q3Vpl2%2BKqwgbn3h9IZ3DkereErmyDFN4L1%2FfS%2Ffp06zdRGQ8ba%2B54uXmUiDPomw%3D%3D; expires=Thu, 13 Sep 2018 05:21:06 GMT; path=/; samesite=lax; httponly
* Added cookie .AspNetCore.Culture="c%3Dru%7Cuic%3Den" for domain lk.taximeter.yandex.ru, path /, expire 0
< Set-Cookie: .AspNetCore.Culture=c%3Dru%7Cuic%3Den; path=/
* Added cookie culture_set="1" for domain lk.taximeter.yandex.ru, path /, expire 0
< Set-Cookie: culture_set=1; path=/
* Added cookie .AspNetCore.Antiforgery.uGYhvnAGzi0="CfDJ8Pj1S8DdfZlAigez8TXM6pDLMsAuOxz71dsYgz-ujDDQMaO7PLi2aVTkPQILcJG6JC2l_bHYZiFnxuGn-G0WoPh78BkIc0GMdhgI0-ugDerBk9BnPrEWUdttn3cP_AF3rEdsla7nNlrnqq4-r2tqS7o" for domain lk.taximeter.yandex.ru, path /, expire 0
< Set-Cookie: .AspNetCore.Antiforgery.uGYhvnAGzi0=CfDJ8Pj1S8DdfZlAigez8TXM6pDLMsAuOxz71dsYgz-ujDDQMaO7PLi2aVTkPQILcJG6JC2l_bHYZiFnxuGn-G0WoPh78BkIc0GMdhgI0-ugDerBk9BnPrEWUdttn3cP_AF3rEdsla7nNlrnqq4-r2tqS7o; path=/; samesite=strict; httponly
< X-Frame-Options: SAMEORIGIN
< Strict-Transport-Security: max-age=31536000
<  
* Connection #0 to host lk.taximeter.yandex.ru left intact
 

 
Добавлено:
Вот с отправкой POST

Код:
 
* Hostname lk.taximeter.yandex.ru was found in DNS cache
*   Trying 2a02:6b8::1:140...
* TCP_NODELAY set
*   Trying 87.250.251.140...
* TCP_NODELAY set
* Connected to lk.taximeter.yandex.ru (87.250.251.140) port 443 (#0)
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* NPN, negotiated HTTP1.1
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* Server certificate:
*  subject: C=RU; O=Yandex LLC; OU=ITO; L=Moscow; ST=Russian Federation; CN=*.yandex.rostaxi.org
*  start date: Nov  9 10:55:16 2016 GMT
*  expire date: Nov  9 10:55:16 2018 GMT
*  subjectAltName: host "lk.taximeter.yandex.ru" matched cert's "*.taximeter.yandex.ru"
*  issuer: C=RU; O=Yandex LLC; OU=Yandex Certification Authority; CN=Yandex CA
*  SSL certificate verify ok.
> POST /support/compensation/234f789ed31c4a56a675a8ce0311efa1 HTTP/1.1
Host: lk.taximeter.yandex.ru
Cookie: .AspNetCore.Antiforgery.uGYhvnAGzi0=CfDJ8Pj1S8DdfZlAigez8TXM6pCRL_cpfmiVtd5g0V9sRid3eraGwSOB0cruU0oJaD_qeHS7qzN7VgzC45K0lhHfuyteU3ar-sEdohZtSSj0tQXfYwDYxg1EOKKPwvCsJx0JtR-rFj2ZItWciV90GJM6fpE; .AspNetCore.Culture=c%3Dru%7Cuic%3Den; culture_set=1; L=YQBZemVaVERtbUNtZXZWAWBlZUt3UVpSXAcdAlM7KU94.1536661933.13619.314574.a9cd4659a6f65d26fdea46a8998a6f9b; Session_id=3:1536661933.5.0.1521090785778:cRgcHw:43.1|203447186.15571148.2.2:15571148|187386.770973.Hmpceu4OLAJu1BcCmWngcaM5aWY; sessionid2=3:1536661933.5.0.1521090785778:cRgcHw:43.1|203447186.0.2|187386.705813._HGO6Gwb9hyDJqd2E3R9jNHp_TU; yandex_login=koreets61; yandexuid=751267061521090785; yp=1852021933.udn.cDprb3JlZXRzNjE%3D
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Connection: keep-alive
Content-Length: 311
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
DNT: 1
Origin: https://lk.taximeter.yandex.ru
Referer: https://lk.taximeter.yandex.ru/support/compensation/234f789ed31c4a56a675a8ce0311efa1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
X-Requested-With: XMLHttpRequest
 
* upload completely sent off: 326 out of 326 bytes
< HTTP/1.1 400 Bad Request
< Server: nginx/1.12.2
< Date: Thu, 13 Sep 2018 05:26:10 GMT
< Content-Length: 0
< Connection: keep-alive
* Added cookie YandexPassport.Auth="CfDJ8Pj1S8DdfZlAigez8TXM6pDd7LLMNMtRZxzs8IjX6664hJijguuhJ3FHjw3KMLaOND14YFbBypFh00Yx1mLvPvpEMfL%2FRW7iY6y1MixTh7UAxwb9dKDIYpNb9aFFHbijsDNvoKe8WdbAN8TYrULXDMHIVCaAVvm49pHclE2zPRlG80TTyO9eQv7%2F5HF2%2F6SdmagrBQcToj7NOW4CajjNJ9H%2BoRwgfSydSpY5CiFO3GjWqlIwZeRTJJrMmNkx5Kx0EFRUPp8f1rr1Vc6Lok3upIWkb5fSCmT1A%2F9%2By2YOFtL59U5QjrIx34D%2BVIiRCk%2BdUw%3D%3D" for domain lk.taximeter.yandex.ru, path /, expire 1536816550
< Set-Cookie: YandexPassport.Auth=CfDJ8Pj1S8DdfZlAigez8TXM6pDd7LLMNMtRZxzs8IjX6664hJijguuhJ3FHjw3KMLaOND14YFbBypFh00Yx1mLvPvpEMfL%2FRW7iY6y1MixTh7UAxwb9dKDIYpNb9aFFHbijsDNvoKe8WdbAN8TYrULXDMHIVCaAVvm49pHclE2zPRlG80TTyO9eQv7%2F5HF2%2F6SdmagrBQcToj7NOW4CajjNJ9H%2BoRwgfSydSpY5CiFO3GjWqlIwZeRTJJrMmNkx5Kx0EFRUPp8f1rr1Vc6Lok3upIWkb5fSCmT1A%2F9%2By2YOFtL59U5QjrIx34D%2BVIiRCk%2BdUw%3D%3D; expires=Thu, 13 Sep 2018 05:29:10 GMT; path=/; samesite=lax; httponly
<  
* Connection #0 to host lk.taximeter.yandex.ru left intact
 

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 08:20 13-09-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Content-Length: 311

а закинулось 326 байт.

Цитата:
* upload completely sent off: 326 out of 326 bytes  

нужно смотреть что в body идет, так как это может вызывать 400 ошибку
 
ps: это что за чушь???

Цитата:
    $data_string = json_encode($data);  

изучаем основы HTTP, нет там json_encode
 
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
 
ну и X-Requested-With=XMLHttpRequest все же тоже нужно, просто обычно это идет в http заголовке и нет нужды кидать это в данных

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 08:39 13-09-2018 | Исправлено: Mavrikii, 08:46 13-09-2018
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Как посмотреть?

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 08:50 13-09-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011
для начала исправить то, на что я указал.

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 08:53 13-09-2018
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Уже исправил
 
Добавлено:

Код:
 
* Hostname lk.taximeter.yandex.ru was found in DNS cache
*   Trying 2a02:6b8::1:140...
* TCP_NODELAY set
*   Trying 87.250.251.140...
* TCP_NODELAY set
* Connected to lk.taximeter.yandex.ru (87.250.251.140) port 443 (#0)
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* NPN, negotiated HTTP1.1
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* Server certificate:
*  subject: C=RU; O=Yandex LLC; OU=ITO; L=Moscow; ST=Russian Federation; CN=*.yandex.rostaxi.org
*  start date: Nov  9 10:55:16 2016 GMT
*  expire date: Nov  9 10:55:16 2018 GMT
*  subjectAltName: host "lk.taximeter.yandex.ru" matched cert's "*.taximeter.yandex.ru"
*  issuer: C=RU; O=Yandex LLC; OU=Yandex Certification Authority; CN=Yandex CA
*  SSL certificate verify ok.
> POST /support/compensation/234f789ed31c4a56a675a8ce0311efa1 HTTP/1.1
Host: lk.taximeter.yandex.ru
Cookie: .AspNetCore.Antiforgery.uGYhvnAGzi0=CfDJ8Pj1S8DdfZlAigez8TXM6pCdv6GLpZoHa5IibwU4sXHIJz2Zh2yMYThGvft8iSbJFycU3IROTFqk3GDRd8WOeO1UNiQvniRQfaH33rhkpyjv9vSfWualXGi5vLkJel_b3-oJyNy8RdCyUyWX1yRf0ys; .AspNetCore.Culture=c%3Dru%7Cuic%3Den; YandexPassport.Auth=CfDJ8Pj1S8DdfZlAigez8TXM6pBbXO2mFCEvrTfP6gUeREQdndmTP5rj%2Bm383hB%2FgR6VOeM0Gpwg7Mr2KLVGGHGt4%2Fm8v4%2FlzxVGecsSaVESwezxYTF8EU4UKCh9PotCT7FS6Vslf8BUOd9Y%2FBoNSFjplIaSEqag7zTkPUcxjci4n%2FF6mjRr%2BU6mcd%2FYPOIl%2FsbVjutZJkwlA%2BOm3IZHu0kaEGj%2BVt21zCvQE77jD8Thb9YSNsPdD%2Fhkglrc2zcB8HqwzZu9dHQO1xDPkyPpjub%2FdpNVCLdcfBaQwrmwVoWXPs71zOoJzaqVKeSYuD2oRUpSHQ%3D%3D; culture_set=1; L=YQBZemVaVERtbUNtZXZWAWBlZUt3UVpSXAcdAlM7KU94.1536661933.13619.314574.a9cd4659a6f65d26fdea46a8998a6f9b; Session_id=3:1536661933.5.0.1521090785778:cRgcHw:43.1|203447186.15571148.2.2:15571148|187386.770973.Hmpceu4OLAJu1BcCmWngcaM5aWY; sessionid2=3:1536661933.5.0.1521090785778:cRgcHw:43.1|203447186.0.2|187386.705813._HGO6Gwb9hyDJqd2E3R9jNHp_TU; yandex_login=koreets61; yandexuid=751267061521090785; yp=1852021933.udn.cDprb3JlZXRzNjE%3D
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
DNT: 1
Origin: https://lk.taximeter.yandex.ru
Referer: https://lk.taximeter.yandex.ru/support/compensation/234f789ed31c4a56a675a8ce0311efa1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36
X-Requested-With: XMLHttpRequest
Content-Length: 300
 
* upload completely sent off: 300 out of 300 bytes
< HTTP/1.1 400 Bad Request
< Server: nginx/1.12.2
< Date: Thu, 13 Sep 2018 05:58:10 GMT
< Content-Length: 0
< Connection: keep-alive
<  
* Connection #0 to host lk.taximeter.yandex.ru left intact
 

Теперь Content-Length совпадает, но все равно Bad Request

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 08:57 13-09-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011

Цитата:
Уже исправил

ну, и где код и результат запроса? (прятать в more), а то на ноуте неудобно читать
 
ps: сделайте для себя еще  
echo http_build_query($data);
и посмотрите как выглядят данные. вполне возможно что при парсинге первоначального ответа id сессии получен не совсем точно

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 08:59 13-09-2018 | Исправлено: Mavrikii, 09:06 13-09-2018
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
сделал http_build_query($data), строка нормальная

Код:
 
valid=false&X-Requested-With=XMLHttpRequest&__RequestVerificationToken=CfDJ8Pj1S8DdfZlAigez8TXM6pAH--QJ4Cmu1m6q_55kbrT9UfYOKikN0AJfgwL5nuGga9b7v0n0ovztvVVmKXfjVE8wMiTzaYWp37sWntbY_t-RiXdQXeGWVxzfV3nwsXoBb0v2GTnWIhZC2xLVEkl9us3JTh8bdPicb2b2EUCFdXR211UAH8w8U1xzP5nJb9WUkA&comment=&result=&resultDriver=
 

Content-Length совпадает, что не так то. Почему  Bad Request?

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 09:21 13-09-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011

Цитата:
 Почему  Bad Request?  

может генерить и в случае проблем с авторизацией, правда это редкость, обычно 403 или перекидывает куда.
 
и есть же API (но для организаций, как понимаю) - https://hsto.org/getpro/freelansim/allfiles/6/63/63297/api-v6.pdf
 

Цитата:
valid=false

на скриншоте true. хотя их там 2, так как не массив, то последний перекрывает

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 09:29 13-09-2018 | Исправлено: Mavrikii, 09:31 13-09-2018
koreets2011



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Да этот ущербный API от Яндекс.Такси нафиг не нужен, ибо то что документировано, работает и без ключа ))).
Проблем вроде с авторизацией нет, но это не точно. Как бы выяснить?

Всего записей: 410 | Зарегистр. 13-10-2011 | Отправлено: 09:39 13-09-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
koreets2011

Цитата:
Как бы выяснить?

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

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 09:41 13-09-2018 | Исправлено: Mavrikii, 09:42 13-09-2018
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Интернет » Web-программирование » Отправка данных формы CURL


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru