Php код страницы по url

Получение исходного кода страницы

в чем проблема?
может есть другие способа получения исходного кода без данной ошибки?
может ошибка из-за https ?

Добавлено через 6 минут

 $url = "https://gamenet.ru/users/strekosat/games/"; $html_code = file_get_contents($url); $html_code; ?>

Просмотр исходного кода страницы
Возможно ли узнать, просматривает ли пользователь исходный код страницы, черз php

Получение кода страницы и запись в файл. (Ну не выходит. )
Пытаюсь получить код страницы и записать его в файл. Перепробовал уже кучу функций. Почему не.

Безопасность исходного кода
Доброе время суток. Думаю, что подобные темы в разделе поднимаются не редко, однако информация.

Просмотр исходного кода в браузерах на основе Chromium
Я делаю небольшой сайт, используя подключаемые блоки PHP. Я заметил в браузерах Google Chrome и.

ЦитатаСообщение от turissssst Посмотреть сообщение

 $url = "https://gamenet.ru/users/strekosat/games/"; $handle = curl_init(); curl_setopt($handle, CURLOPT_URL, $url); curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); $homepage = curl_exec($handle); curl_close($handle); echo $homepage."dddd\r\n"; ?>

возвращает пустую страницу, подумал что это из-за того что скрипт на локальном сервере, поместил скрипт на хостинг но ничего не изменилось.
P.S.
dddd для того что бы убедится что скрипт хоть что-то возвращает

Добавлено через 1 час 45 минут
использую usb webserver

Добавлено через 13 часов 50 минут
пожалуйста помогите

Да, похоже что это из-за https.

tolimadokara, можно это обойти?

Добавлено через 4 минуты
там пример пост запроса, боюсь что если я начну его переделывать под гет то ошибок не избежать.
не могли бы вы мне помочь с этим?
просто сделать что бы мне возвращало исходный код страницы

Добавлено через 7 часов 21 минуту
Может попробовать с применением джава скриптов?

1 2 3 4 5 6 7 8 9 10 11 12
 $fp = fsockopen ("ssl:gamenet.ru", 443, $errno, $errstr, 30); if (!$fp) { echo $errstr ($errno)."
\n"
; } else { fputs ($fp, "GET / HTTP/1.0\r\nHost: www.example.com\r\n\r\n"); while (!feof($fp)) { echo fgets ($fp,128); } fclose ($fp); } ?>

пробовал так но не помогло
ошибка

Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: No such host is known. in F:\ProgramFiles\DOWNLOAD2\www(1)\www\root\ideone.php on line 2

Warning: fsockopen(): unable to connect to ssl:gamenet.ru:443 (php_network_getaddresses: getaddrinfo failed: No such host is known. ) in F:\ProgramFiles\DOWNLOAD2\www(1)\www\root\ideone.php on line 2

Fatal error: Call to undefined function php_network_getaddresses: getaddrinfo failed: No such host is known. () in F:\ProgramFiles\DOWNLOAD2\www(1)\www\root\ideone.php on line 4

использую локальный сервер

ЦитатаСообщение от turissssst Посмотреть сообщение

значит моя ошибка в этом? мне надо что бы скрипт вывел мне исходный код страницы но способ с curl и простой получения исходного кода страницы не работают

Источник

Как получить HTML-код веб-страницы в PHP?

то я хочу, чтобы HTML-код страницы был подан. Я хочу получить этот код HTML и сохранить его в переменной PHP.

Если ваш PHP-сервер разрешает обертку url fopen, тогда самый простой способ:

$html = file_get_contents('http://stackoverflow.com/questions/ask'); 

Если вам нужно больше контроля, вы должны посмотреть на функции cURL :

$c = curl_init('http://stackoverflow.com/questions/ask'); curl_setopt($c, CURLOPT_RETURNTRANSFER, true); //curl_setopt(. other options you want. ) $html = curl_exec($c); if (curl_error($c)) die(curl_error($c)); // Get the status code $status = curl_getinfo($c, CURLINFO_HTTP_CODE); curl_close($c); 

Кроме того, если вы хотите каким-либо образом манипулировать извлеченной страницей, вам может понадобиться попробовать парсер php DOM. Я нахожу PHP Simple HTML DOM Parser очень простым в использовании.

Вы можете проверить библиотеки YQL от Yahoo: http://developer.yahoo.com/yql

Задача под рукой так же проста, как и

select * from html where url = 'http://stackoverflow.com/questions/ask' 

Вы можете попробовать это на консоли: http://developer.yahoo.com/yql/console (требуется вход в систему)

Простой способ: используйте file_get_contents() :

$page = file_get_contents('http://stackoverflow.com/questions/ask'); 

Обратите внимание, что allow_url_fopen должен быть true в php.ini чтобы иметь возможность использовать обертки fopen с поддержкой URL.

Более продвинутый способ. Если вы не можете изменить свою конфигурацию PHP, allow_url_fopen по умолчанию false , и если ext / curl установлен, используйте библиотеку cURL для подключения к желаемой странице.

посмотрите на эту функцию:

include_once('simple_html_dom.php'); $url="http://stackoverflow.com/questions/ask"; $html = file_get_html($url); 

Вы можете получить весь HTML-код в виде массива (проанализированная форма), используя этот код. Загрузите файл ‘simple_html_dom.php’ здесь http://sourceforge.net/projects/simplehtmldom/files/simple_html_dom.php/download

вы можете использовать file_get_contents, если вы хотите сохранить источник как переменную, однако завиток лучше.

$url = file_get_contents('http://example.com'); echo $url; 

это решение отобразит веб-страницу на вашем сайте. Однако завиток – лучший вариант.

Вот два разных простых способа получить контент из URL :

Включите Allow_url_include с вашего хостинга (php.ini или где-нибудь)

Включить php_curl, php_imap и php_openssl

 $variableee = get_dataa('http://example.com'); echo $variableee; ?> 

Источник

Как получить контент веб-страницы, если по ссылке с именем хоста не получилось

Простым языком об использовании PHP с cURL на одном примере сайта с JavaScript-защитой.

1. Парсер для получения контента по ссылкам

Задача парсера тривиальная — агрегатор новостей: сбор контента с новостных сайтов.
На входе: файл с URL-ссылками на статьи для сбора.

Веб-интерфейс для администратора: php-страница с кнопкой для запуска скрипта парсера.
Скрипт: использование cURL — с минимальным набором опций.

function cURL_get_content($url)
  • заходит на страницу запуска скрипта,
  • нажимает кнопку запуска. 2) Скрипт:
  • обходит (в цикле) массив ссылок на сайты,
  • собирает контент статей,
  • формирует веб-страницы по заданному шаблону.

Проблема: наткнувшись на интересную статью с сайта о недвижимости (Домофонд), попытался добавить ее в файл ссылок для сбора контента.

Контент со страницы не собрался: 403 Forbidden.

Спойлер: если сразу интересно найденное решение, то можно переходить к заключению, пропустив бесплодные попытки поиска.

2. Попытка решения в лоб за счет «имитации» браузера доп. заголовками в запросе

В поисках сначала натолкнулся на статьи о том, что некоторые сайты ставят защиту от ботов (чем и является парсер для сбора контента). Например, при использовании cURL надо «оживлять» запрос заголовками, что я и делал, но безуспешно — проиллюстрирую одной из попыток.

function cURL_get_content($url)< $url_1 = "https://www.domofond.ru/"; $url_2 = $url; $headers = array( 'GET ' . $url_2 . ' HTTP/1.1', "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-Encoding: gzip, deflate", "Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7", "Host: domofond.ru", "Referer: domofond.ru", "Upgrade-Insecure-Requests: 1", 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36', 'Cookie: dfuid=5e0dd723-40e6-46cf-a2f1-1db784e320e1; _ga=GA1.2.140590976.1641893876; rrpvid=42725831313485; rcuid=6166ad1a101fb8000139a8a9; _ym_uid=1641893879540019262; _ym_d=1641893879; __gads=ID=00752b7382f51452:T=1641893879:S=ALNI_ManEsFfeviPUR29VUUnBx_DcgsAxQ; _gid=GA1.2.589118605.1642400326; _ym_visorc=w; _ym_isad=2; cto_bundle=ellcGV9VT0c4Q0Vrd2E3dEhtVmhJNk1Ic20xaHNnNXhuSiUyRiUyQiUyRnZYMlFEV0tnNExTWmhQUjJJVzdUOHdkNmlKdnh1aEZtUWMzQ0dxV25Nb3hrYktOeUpEMjZLZ0xLTFElMkZDekxiSkh6elEyOFM0UHVZZ2xHTklpQ2RJOTRkb1Q3QUNTODRlR0hnU0Z1MEFkeDBtNTc1MVozdjVndyUzRCUzRA' ); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); . >

Пример запроса с заголовками:
GET /statya/kolichestvo_dolgostroev_uvelichilos_v_vosemnadtsati_regionah_rf_za_2021_god/102082 HTTP/1.1 Host: www.domofond.ru User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36 Accept: . +куки +смотрел/добавлял заголовки, отправленные в браузере

2.1. Заголовок с Host

Хотя при добавлении хост-заголовка все же возникла одна из мыслей.

Если значение заголовка менялось с «Host: www.domofond.ru» на «Host: domofond.ru» (без www.), то появлялась ошибка: 421 Misdirected Request.

Поэтому в браузере я вручную открывал страницу с/без www — естественно, визуально для меня ничего не менялось.

Перенаправление срабатывало нормально, но потом я еще решил изменить и протокол, чтобы проверить, какой будет редирект.

Сменив в браузере ссылку с https:// на http:// (с/без www) получал нормальный редирект на главное зеркало (https://www.) с нормальным отображением статьи.

При этом вместо статьи отобразилась та же ошибка: 421 Misdirected Request.

3. Изучение веб-страницы, «проблемной» для парсера

Продолжив поиски по теме защиты на сайтах от ботов, столкнулся с выполнением JavaScript-кода на страницах для этой цели.

Сразу скажу, что в браузере отключил выполнение JavaScript-сценариев, но страница продолжила отображаться нормально.

Хотя при изучении кода проблемной страницы смутил следующий скрипт, включающий в виде JSON-блока контент статьи.

 

4. ПО для сбора контента с веб-сайтов

В ходе исследований попадались статьи на «безголовые» браузеры, среды наподобие селениума и т.п.

Предлагалась имитация действий пользователя, установка тайм-аутов при обращении к сайту для снижения нагрузки и т.д.

Но для решения задач по парсингу одной-двух ссылок, а не многопоточного скачивания всего сайта это не подходило.

Глубоко в этом направлении не разбирался и не копал.

5. Возврат к мысли про ссылку с IP-адресом сервера

Пришлось вернуться к начальному вопросу: как получить контент веб-страницы, если по ссылке с именем хоста не получилось.

В ответ получил содержимое страницы.

6. Выводы и решение

В чем проблема — до конца непонятно. Закроет ли собственник сайта (Домофонд) эту дыру и сможет ли это вообще сделать — неясно.

Но в статье приведено достаточно простое решение и оно работает, а на просторах интернета с такой легкой подсказкой я не сталкивался.

В решении дополнил скрипт методом gethostbyname, чтобы получать IPv4-адрес, соответствующий переданному имени хоста.

Парсер для получения контента по ссылке на входе имеет тот же набор URL-ссылок, но теперь обращается по IP-адресам серверов, что не мешает его работе в сборе данных.

Источник

Читайте также:  Зачем нужны примитивы java
Оцените статью