То, что я пытаюсь сделать, – это войти на сайт, а затем перейти и получить данные из таблицы, так как они не имеют функции экспорта. До сих пор мне удалось войти в систему, и она показывает мне домашнюю страницу пользователя. Однако мне нужно перейти на другую страницу или каким-то образом захватить эту страницу, все еще находясь во входе с помощью curl.
Мой код:
$username="email"; $password="password"; $url="https://jiltapp.com/sessions"; $cookie="cookie.txt"; $url2 = "https://jiltapp.com/shops/shopname/orders"; $postdata = "email=".$username."&password=".$password; $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); curl_setopt ($ch, CURLOPT_TIMEOUT, 60); curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie); curl_setopt ($ch, CURLOPT_REFERER, $url); curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata); curl_setopt ($ch, CURLOPT_POST, 1); $result = curl_exec ($ch); echo $result; curl_close($ch);
Как я уже говорил, я получаю доступ к основной странице пользователя, но мне нужно захватить содержимое переменной $ url2, а не $ url. Как я могу добиться чего-то подобного?
Спасибо!
После входа в систему сделайте второй запрос для страницы, содержащей данные, которые вы после.
Для последующих запросов вы должны установить параметр CURLOPT_COOKIEFILE
который указывает на тот же файл, что и CURLOPT_COOKIEJAR
. cURL будет читать файлы cookie из этого файла и отправлять их с запросом.
$username="email"; $password="password"; $url="https://jiltapp.com/sessions"; $cookie="cookie.txt"; $url2 = "https://jiltapp.com/shops/shopname/orders"; $postdata = "email=".$username."&password=".$password; $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); curl_setopt ($ch, CURLOPT_TIMEOUT, 60); curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie); curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie); // <-- add this line curl_setopt ($ch, CURLOPT_REFERER, $url); curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata); curl_setopt ($ch, CURLOPT_POST, 1); $result = curl_exec ($ch); echo $result; // make second request $url = 'page you want to get data from'; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 0); $data = curl_exec($ch);