<?php
function getUrl($inputSearchPostArray) {
if (is_array($inputSearchPostArray)) {
$inputSearchPostString = http_build_query($inputSearchPostArray);
} else {
$inputSearchPostString = $inputSearchPostArray;
}
$userAgent = 'Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0';
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_URL, "https://www.avito.ru/search");
curl_setopt($cURL, CURLOPT_HEADER, TRUE);
curl_setopt($cURL, CURLOPT_USERAGENT, $userAgent);
curl_setopt($cURL, CURLOPT_TIMEOUT, 10);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($cURL, CURLOPT_POST, TRUE);
curl_setopt($cURL, CURLOPT_POSTFIELDS, $inputSearchPostString);
curl_setopt($cURL, CURLOPT_AUTOREFERER, TRUE);
$answerFromServer = curl_exec($cURL);
if (curl_getinfo($cURL, CURLINFO_HTTP_CODE) != 301) {
return FALSE;
}
$outputUrl = substr($answerFromServer, stripos($answerFromServer, "Location: ") + 10);
$outputUrl = substr($outputUrl, 0, strpos($outputUrl, "X-Frame-Options:") - 1);
return 'https://www.avito.ru'.$outputUrl;
}
$test = getUrl($_POST);
echo $test;
$userAgent = 'Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0';
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_URL, $test);
curl_setopt($cURL, CURLOPT_HEADER, TRUE);
curl_setopt($cURL, CURLOPT_USERAGENT, $userAgent);
curl_setopt($cURL, CURLOPT_TIMEOUT, 10);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, TRUE);
$answerFromServer = curl_exec($cURL);
if ($answerFromServer === false)
{
throw new Exception('Curl error: ' . curl_error($cURL));
}
?>
Функция ровно работает, она ринимает пост запрос который авито отправляет на свои сервера при нажатии кноки найти. Решил затестить. Вот вывод.
https://www.avito.ru/ekaterinburg/avtomobili/s_probegom/bmw/m3?pmax=15000000&pmin=15000&metro=2039-2041-2044&f=188_0b893.1375_0b15524.187_866-869.185_861.186_864.1374_15786b15800.695_8852&i=1
Fatal error: Uncaught Exception: Curl error: Illegal characters found in URL in /root/sites/avito.bot/search.php:58
Stack trace:#0 {main} thrown in /root/sites/avito.bot/search.php 58
Не могу понять какие символы ему не нравятся. В браузере ссылка открывается.
Ошибку исправил. Когда функция вычленяла ссылку из страницы с редиректом, то захватывала пробел, а с ним походу еще какие-то скрытые знаки.
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Здравствуйте мне нужно достать эти параметры(на скрине) как правильно это сделать ?