Express777
@Express777

Как обработать JS cookies в PHP?

Здравствуйте уважаемые.

Задача получить данные с сайта, спарсить через PHP
Вот способы, которые я использовал
1. file_get_contents(). Но
failed to open stream: HTTP request failed! HTTP/1.1 500 ( The specified network name is no longer available. )

2. Использовал CURL, как гугл бот.
https://github.com/izniburak/google-bot-curl/blob/...
Но получаю такой результат, точнее ничего не получаю. Через примерно 40 секунд
request time out
3. Использовал CURL, отправлял юзер агента Хрома.
Получаю такой результат, отформатировал код, чтобы было удобнее:
<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<script type="text/javascript">
	document.cookie='cookieName=cookieToken; max-age=604800; path=/; domain=.examle.com;'; 
	var nc = function() {
		return document.cookie.indexOf('cookieName=cookieToken')==-1;
	};
	var w = function() {
		document.body.innerHTML = document.getElementsByTagName('noscript')[0].textContent;
	};

if (!window.opera) {
	
	if (!nc()) {
		window.location.reload(true);
	}
	
	var r = function() {
		if (nc()) w();
	};

} 

else {var r = function () {if (!nc()) {window.location.reload(true);}else {w();}}}</script>

</head>
<body onload="r()">
	<noscript>You have to turn on javascript and cookies support in browser to visit this site.<br>
		Для посещения этого сайта необходима поддержка javascript и cookies Вашим браузером<br>
		<a href="https://ddos-guard.net">https://ddos-guard.net</a></noscript>
</body>

</html>


4. Использовал phantomJs. Запускал через консоль, не через PHP.
Код
Ссылка на пастебин, из за ограничении на количество символов
Код JS

Ответ в обоих test1.html test2.html, такой же как при запросе Curl, только без body.
pastebin.com/qAfGBDeL

Мысли вслух. Этот скрипт устанавливает куки через JS. Затем проверяет его наличие, если куки нет, то перезагружает страницу. Так как куки сохраняются в браузере, то при следующем посещении куки уже есть.
Проходит проверку, есть ли куки. Куки есть и страницу перезагружать не надо, надо вывести контент
Как получить нормальную страницу с контентом?
  • Вопрос задан
  • 1568 просмотров
Пригласить эксперта
Ответы на вопрос 3
thewind
@thewind
php программист, front / backend developer
В curl пробовали опцию cookie jar file? Если кука устанавливается не только через js, но и через заголовки ответа, то она запихнется в этот массив, а опция follow location в curl позволит "обновить" страницу, отправив нужную куку на сервер. Всё это сработает только при условии, что функции js дублируются в заголовках сервера.
Ответ написан
Комментировать
EnChikiben
@EnChikiben
можно же просто зайти на сайт в браузере получить куку скопировать её и вставить её в бота
Ответ написан
@ynblpb_spb
дятел php
В phantomjs нужно указать путь к файлу с куками и всё заработает. Читайте документацию.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы