Как получить токен доступа автоматически для проверки серийного номера через скрипт?
Есть страница - https://rma.asus-europe.eu/ae/info/warranty Через поле "Check ASUS product warranty" можно проверить любой серийный номер Asus. Вопрос состоит в том, что бы получить токен доступа для скрипта автоматически, не вписывая в код.
Код скрипта:
$imei = trim($_GET['imei']);
$headers = array(
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Language: ru,pl-PL;q=0.9,pl;q=0.8,en-US;q=0.7,en;q=0.6',
'Connection-type: application/x-www-form-urlencoded',
'Content-Length: 74',
'Cookie: laravel_session=gb5qoiK9GIQvjsvKXDw96iyE6zqSN9zw9qbEPEFR; XSRF-TOKEN=eyJpdiI6Im03RHlNR3NiMWt0ZnlESHVTZ09BWVE9PSIsInZhbHVlIjoicEpnOWNSWjlGbERSdFJ1N2dCOHlKb3dkR2lPYzBqUmxPR0pJRUtPb1Z0VUZVR0VEN3ZOR0tHNk1nMFJtaXY0di82ZVlOZ0s4enhlMWpaTGpSbjViQ1YrYXhCWnpCK1hVcmVINnlwM0JZR3pOK01ZdHd0N1lDWjM3RmEyWGlYTVUiLCJtYWMiOiI4MmI5MTFlMTdhZjRkZDQ4MmU1MmIwMTk2ODQ3NTYxYzBlYzAyMTdhNjkyMDIxNzQwZjQ3M2UwZDdkNzdkYzg2In0%3D',
'Origin: https://rma.asus-europe.eu',
'Referer: https://rma.asus-europe.eu/ae/info/warranty',
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36',
);
$url = "https://rma.asus-europe.eu/ae/info/warranty";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_HTTPHEADER,$headers);
curl_setopt ($ch, CURLOPT_USERAGENT, $przegladarka);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT ,0);
curl_setopt ($ch, CURLOPT_TIMEOUT, 400);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "_token=2DOlvGEYGO7AQkPZTQ5CIt9L4rpQhSSQD2OVDdpP&snWarranty=$imei");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($ch, CURLOPT_REFERER, $url);
$result = curl_exec ($ch);
Для просмотра информации можно использовать серийный номер G6N0CX16B472265
Ответы (1 шт):
Автор решения: Jean-Claude
→ Ссылка
Вариант 1 с куко-файлом:
//урл
$url = "https://rma.asus-europe.eu/ae/info/warranty";
//"корневой" каталог, без конечного слеша
const ROOT_DIR = __DIR__;
//опции парсинга
$curl_options = [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_COOKIEFILE => ROOT_DIR . '/asus.txt',
CURLOPT_COOKIEJAR => ROOT_DIR . '/asus.txt'
];
//инициализация
$ch = curl_init();
curl_setopt_array($ch, $curl_options);
//выполнить
$page = curl_exec($ch);
//парсим токен
$search = preg_match('#<input name="_token" type="hidden".+?value="(.+?)"#isu', $page, $matches);
if ($search === 1) {
$token = $matches[1];
}
$postfields = [
'_token' => $token,
'snWarranty' => 'G6N0CX16B472265',
];
$options = [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $postfields,
];
//опции
$options = $options + $curl_options;
curl_setopt_array($ch, $options);
//выполнить
$page = curl_exec($ch);
//парсим контент
$search = preg_match('#<ul class="alert alert-info">(.+?)</ul>#isu', $page, $matches);
//распечатка
echo $search === 1 ? $matches[1] : 'бугага';
//Model: K501UX-DM312T
//Distributor: EXECUTIVE S.P.A.
//Country:: IT
//Warranty start date: 2016-07-12*
//Warranty end date: 2017-10-04*
//Warranty coverage would be fulfilled in UAE
//*Presented dates are taken from the global system and they will be used only in case original proof of purchase is missing. Dates do not concern batteries.
Вариант 2 с куками на лету:
//урл
$url = "https://rma.asus-europe.eu/ae/info/warranty";
//"корневой" каталог, без конечного слеша
const ROOT_DIR = __DIR__;
//опции парсинга
$curl_options = [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => true,
CURLOPT_SSL_VERIFYPEER => false,
//CURLOPT_COOKIEFILE => ROOT_DIR . '/asus.txt',
//CURLOPT_COOKIEJAR => ROOT_DIR . '/asus.txt'
];
//инициализация
$ch = curl_init();
curl_setopt_array($ch, $curl_options);
//выполнить
$page = curl_exec($ch);
//заголовки + тело
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($page, 0, $header_size);
$body = substr($page, $header_size);
//взять куки
preg_match_all('/^Set-Cookie:\s*([^;]*)/mi', $header, $matches);
//куки вместе
$str = join('; ', $matches[1]);
//парсим токен
$search = preg_match('#<input name="_token" type="hidden".+?value="(.+?)"#isu', $page, $matches);
if ($search === 1) {
$token = $matches[1];
}
$postfields = [
'_token' => $token,
'snWarranty' => 'G6N0CX16B472265',
];
$options = [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $postfields,
CURLOPT_COOKIE => $str,
];
//опции
$options = $options + $curl_options;
curl_setopt_array($ch, $options);
//выполнить
$page = curl_exec($ch);
//парсим контент
$search = preg_match('#<ul class="alert alert-info">(.+?)</ul>#isu', $page, $matches);
//распечатка
echo $search === 1 ? $matches[1] : 'бугага';
//Model: K501UX-DM312T
//Distributor: EXECUTIVE S.P.A.
//Country:: IT
//Warranty start date: 2016-07-12*
//Warranty end date: 2017-10-04*
//Warranty coverage would be fulfilled in UAE
//*Presented dates are taken from the global system and they will be used only in case original proof of purchase is missing. Dates do not concern batteries.