powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (php, cUrl). cURL не получает полную информацию с сервера.
15 сообщений из 15, страница 1 из 1
(php, cUrl). cURL не получает полную информацию с сервера.
    #39748410
zadov2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет!

Есть url : https: //shop.donaldson.com/store/ru-ru/product/P550299/20271
- в браузер идёт полная красивая инфа.
- а через cURL (а так-же кэш гугла, например) получают только треть инфы с этого сервера - часть данных не поступает.

Пытался заголовками через cURL полностью "мимикрировать" под свой браузер: безрезультатно.
Сертификаты не подключал (не знаю как, думаю не в них дело, раз идёт загрузка) : CURLOPT_SSL_VERIFYPEER => false

Как думаете реально получить через cURL то, что можно получить через браузер?
...
Рейтинг: 0 / 0
(php, cUrl). cURL не получает полную информацию с сервера.
    #39748433
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открываю страницу в браузере, жму Ctrl+S, сохранить только HTML - итоговый размер файла 105057 байт.
Из консоли тот же адрес без мимикрирований:
Код: plaintext
1.
2.
$ curl 'https://********/store/ru-ru/product/P550299/20271' 2>/dev/null | wc -c
97823
Ну да, в несколько килобайт есть разница, но никак не на две трети.
...
Рейтинг: 0 / 0
(php, cUrl). cURL не получает полную информацию с сервера.
    #39748445
zadov2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, я не взвешивал - оценивал подгруз визуально ("контентно, информативно") - если так можно выразиться. Самое тяжёлое там скрипты и картинка с фильтром - их cURL подгружает, а, например, размер этого фильтра (и применимость) - уже нет.

Сорри, что не совсем ясно в начале выразился...
...
Рейтинг: 0 / 0
(php, cUrl). cURL не получает полную информацию с сервера.
    #39748457
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zadov2008оценивал подгруз визуально ("контентно, информативно")Чем байты не устроли? Точнее и информативнее уж некуда.

zadov2008скрипты и картинка с фильтром - их cURL подгружает, а, например, размер этого фильтра (и применимость) - уже нетКакой URL дадите курлу для загрузки - такой и будет скачивать. По крайней мере, будет пытаться. Дали URL HTML-кода - он и будет запрошен и, возможно, получен. Требуется что-то ещё - указывайте конкретные URLы нужного. В ряде случаев для полноты "прикинуться браузером" потребуется поддержка куков и соблюдение последовательности запросов. Всю веб-страницу целиком (включая скрипты, стили, картинки и т.д.) за один запрос curl скачивать не умеет. Если очень надо получить веб-страницу (или сайт) целиком - это умеет wget.
...
Рейтинг: 0 / 0
(php, cUrl). cURL не получает полную информацию с сервера.
    #39748464
zadov2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle, именно на этом сайте стоит защита от cURL . (многие, я видел, в форумах спрашивали как защитить сайт от cURL (количеством обращений, таймаутом и т.д.) - вот тут они могут посмотреть как эта защита работает в живую).

от cURL нужен только скачаный HTML-код (без стилей, картинок и т.д.) Но часть HTML-кода - защищена от cURL :

Вот середина html-кода при исследовании элемента браузером :
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
<div class="container">
	<h4> Атрибуты (характеристики)</h4>
	<table class="table table-striped">
		<tbody>
			<tr style="display: table-row;">
				<td>Наружный диаметр</td>
				<td>79 мм (3.11 Дюймы)</td>
			</tr>
			<tr style="display: table-row;">
				<td>Внутренний диаметр</td>
				<td>43 мм (1.69 Дюймы)</td>
			</tr>
			<tr style="display: table-row;">
				<td>Длина</td>
				<td>324 мм (12.76 Дюймы)</td>
			</tr>
			<tr style="display: none;">
				<td>Эффективность, определяемая коэффициентом «бета», 1000</td>
				<td>9 МИКРОН</td>
			</tr>
			<tr style="display: none;">
				<td>Тип наполнителя</td>
				<td>Синтетические</td>
			</tr>
			<tr style="display: none;">
				<td>Вид конструкции</td>
				<td>Картридж</td>
			</tr>
			<tr style="display: none;">
				<td>Область основного применения</td>
				<td>ALLISON 23018850</td>
			</tr>
		</tbody>
	</table>
</div>



Вот этот-же кусок у cURL :
Код: html
1.
2.
3.
4.
5.
<div class="container">
	<h4> Атрибуты (характеристики)</h4>
	<table class="table table-striped">
	</table>
</div>



Я уже много-чего перепробовал, чтобы подобрать правильные параметры cURL, чтобы меня восприняли как браузер - не смог...
...
Рейтинг: 0 / 0
(php, cUrl). cURL не получает полную информацию с сервера.
    #39748465
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zadov2008на этом сайте стоит защита от cURL Глупости. Существует масса способов защиты от ботов, от "быстрого" скачивания, но "защита от cURL"...
Ладно, напишите своего клиента, не так уж оно и сложно. И пусть только этот сайт попробует не отдать правильный контент этому самописному клиенту!
...
Рейтинг: 0 / 0
(php, cUrl). cURL не получает полную информацию с сервера.
    #39748470
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zadov2008Вот этот-же кусок у cURL :Вот тот же кусок кода при просмотре в браузере по Ctrl+U
Код: sql
1.
<div class="container"> <h4> Атрибуты (характеристики)</h4> <table class="table table-striped"> </table> </div>

Чем он отличается от вашего курлового?
...
Рейтинг: 0 / 0
(php, cUrl). cURL не получает полную информацию с сервера.
    #39748472
zadov2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle, клиента за основу взял вот этого :
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
    function get_url( $url )
    {
        $user_agent='Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0';

        $options = array(

            CURLOPT_CUSTOMREQUEST  =>"GET",        //set request type post or get
            CURLOPT_POST           =>false,        //set to GET
            CURLOPT_USERAGENT      => $user_agent, //set user agent
            CURLOPT_COOKIEFILE     =>"cookie.txt", //set cookie file
            CURLOPT_COOKIEJAR      =>"cookie.txt", //set cookie jar
            CURLOPT_RETURNTRANSFER => true,     // return web page
            CURLOPT_HEADER         => false,    // don't return headers
            CURLOPT_FOLLOWLOCATION => true,     // follow redirects
            CURLOPT_ENCODING       => "",       // handle all encodings
            CURLOPT_AUTOREFERER    => true,     // set referer on redirect
            CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
            CURLOPT_TIMEOUT        => 120,      // timeout on response
            CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
			CURLOPT_SSL_VERIFYPEER	=> false,
        );

        $ch      = curl_init( $url );
        curl_setopt_array( $ch, $options );
        $content = curl_exec( $ch );
        $err     = curl_errno( $ch );
        $errmsg  = curl_error( $ch );
        $header  = curl_getinfo( $ch );
        curl_close( $ch );

        $header['errno']   = $err;
        $header['errmsg']  = $errmsg;
        $header['content'] = $content;
        return $header;
    }

	$result = get_url( $url );
	print_r($result);


дописывая его разными свойствами (нужными и не нужными). Пока url не победил :)
...
Рейтинг: 0 / 0
(php, cUrl). cURL не получает полную информацию с сервера.
    #39748473
zadov2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vklezadov2008Вот этот-же кусок у cURL :Вот тот же кусок кода при просмотре в браузере по Ctrl+U
Код: sql
1.
<div class="container"> <h4> Атрибуты (характеристики)</h4> <table class="table table-striped"> </table> </div>

Чем он отличается от вашего курлового?
Тем, что отсутствует
Код: html
1.
<tbody> куча данных </tbody>
...
Рейтинг: 0 / 0
(php, cUrl). cURL не получает полную информацию с сервера.
    #39748474
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zadov2008Пока url не победил :)И не победите. До тех пор, пока очень внимательно не изучите, как работает эта веб-страничка и какие меры приняты для защиты от скачивания ее фрагментов. Перечитайте предыдущую фразу очень внимательно, каждое слово там имеет значение. Защита есть, но не там, где Вы ее пытаетесть "обойти".

zadov2008Тем, что отсутствуетМаксимум, что отсутствует - это переводы строки. Всё остальное - идентично. Читайте посты внимательно, а не по диагонали.
...
Рейтинг: 0 / 0
(php, cUrl). cURL не получает полную информацию с сервера.
    #39748483
zadov2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Данные там подгружает js-скрипт и вставляет данные в таблицу (см. скрин). В этом и защита, вернее в том, что скрипт подгружает данные в таблицу, только когда пользователь серфит страницу. (ни сохраняет, ни смотрит исходный код, ни лезет с помощью cUrl... а классически открыл браузером).
...
Рейтинг: 0 / 0
(php, cUrl). cURL не получает полную информацию с сервера.
    #39748502
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мыслите в правильном направлении.
Курл понятия не имеет о яваскрипте.
Веб-браузер имеет и умеет выполнять яваскрипт, который принимает участие в формировании документа.

zadov2008В этом и защитаНу, блин... Защита от Вас лично - наверно уже в этом месте начинается. Для остальных, кто интересуется в веб-технологиях, подгрузка фрагментов страницы отдельными частями - это довольно распространенная технология.
...
Рейтинг: 0 / 0
(php, cUrl). cURL не получает полную информацию с сервера.
    #39748512
zadov2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что ж... если у кого будут идеи по этой теме, пишите...
js && cURL проблема распространённая и не такая простая - судя по нарытым темам в форумах. :)
...
Рейтинг: 0 / 0
(php, cUrl). cURL не получает полную информацию с сервера.
    #39748541
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zadov2008js && cURL проблема распространённаяНе ищите проблему там, где её нет. Курл в принципе не поддерживает яваскрипт.

Соответственно, Вам либо следует вовсе отказаться от использования "только curl" и посмотреть в другую сторону. Либо, следует писать скрипты, которые будут эмулировать поведение веб-браузера в соответствии с действиями яваскриптов - как минимум, формировать дополнительные запросы к вебсерверу и собирать страницу воедино.

В качестве альтернатив - попробуйте поискать консольный веб-браузер с поддержкой яваскрипта (js не все поддерживают) или обратите внимание на phantomjs или аналогичное ПО.

Если тырилка контента на винде работать будет - можно IE задействовать, он легко управляется через COM (последние версии не пробовал, но раньше проблем не было).
...
Рейтинг: 0 / 0
(php, cUrl). cURL не получает полную информацию с сервера.
    #39748542
zadov2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle, спасибо! попробую ...
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (php, cUrl). cURL не получает полную информацию с сервера.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]