Как спарсить страницу отличную от стартовой при таком раскладе?
Приветствую, друзья.
Столкнулся с такой проблемой.
Необходимо спарсить страницу от лица авторизованного пользователя. Авторизоваться получается, но дело в том, что я могу спарсить только главную страницу от лица польователей.
С чем возникли проблемы:
1) На сайте авторизации по кукам нет, только по сессии
2) Страницы открываются все в index.php и зависят от GET запроса. То есть index.php?cf='name_page'
3) Авторизация отправляется на страницу по адресу index.php?cf='auth', а чтобы спарсить к примеру другую страницу, которая мне нужна, то адрес уже index.php?cf='other'. И из-за отсутсвия куков, возникает проблема, так как пытаясь ее спарсить, мне опять предлагают пройти авторизацию.
Скажите, как можно обойти такого рода барьер. Заранее премного благодарен. Сайт на котором пытаюсь авторизоваться: wmmail.ru
"1) На сайте авторизации по кукам нет, только по сессии"
Сессия и есть кукисы.
"Страницы открываются все в index.php и зависят от GET запроса. То есть index.php?cf='name_page'"
Это не проблема, с точки зрения HTTP нет никакой разницы, разные URL или один URL и разные параметры.
1. сессия зависит от печенек.
2. первый запрос на auth -> получаем необходимые печеньки, сохраняем их -> при всех последующих запросах используем то, что сохранили на предыдущем этапе.
если парсится курлом, то смотреть CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR.
Да, я использую это, но все равно безуспешно
function post_wmm($url, $post, $refer, $us){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_REFERER, $refer);
$result_1 = post_wmm(
'www.wmmail.ru/index.php?cf=uzd-viewtask',
null,
'Referer: www.wmmail.ru/index.php',
$us);
Вот в первой функции авторизация проходит на ура, а вот когда вызываю следующей этой же функцией страницу с другим GET запросом, то просит залогиниться.
Данил Сысоев: пожалуйста)
CURLOPT_COOKIESESSION как раз говорит что нужно игнорить сохраненные ранее сесионные куки. иными словами эта опция говорит "начать новую сессию", что вам совсем не нужно.
Да, я сохраняю то что находится в сессиях COOKIEJAR'ом в отдельный файл, и потом читаю, но все равно не удается, к примеру если есть две curl функции, одна авторизовывает, другая просто пытается прочесть от имени авторизованного, то не удается, просит залогиниться.