Перейти к основному содержимому

Net::HTTP - Универсальный базовый парсер с поддержкой многостраничного парсинга и обходом CloudFlare

Обзор парсера

Обзор парсераNet::HTTPNet::HTTP – это универсальный парсер, который позволяет решать большинство нестандартных задач. Может быть использован как основа для для парсинга произвольного контента с любых сайтов. Позволяет скачать код страницы по ссылке, поддерживает многостраничный парсинг (переход по страницам), автоматическую работу с прокси, позволяет выполнить проверку успешного ответа по коду или по содержимому страницы.

Кейсы по применению парсера

Собираемые данные

Собираемые данные
  • Контент
  • Код ответа сервера
  • Описание ответа сервера
  • Заголовки ответа сервера
  • Прокси, использованные при запросе
  • Массив со всеми собранными страницами (используется при работе опции Use Pages)

Возможности

  • Многостраничный парсинг (переход по страницам)
  • Автоматическая работа с прокси
  • Проверка успешного ответа по коду или по содержимому страницы
  • Поддерживает сжатия gzip/deflate/brotli
  • Определение и преобразование кодировок сайтов в UTF-8
  • Обход защиты CloudFlare
  • Выбор движка (HTTP или Chrome)
  • Опция Check content – выполняет указанное регулярное выражение на полученной странице. Если выражение не сработало, страница будет загружена заново с другой прокси.
  • Опция Use Pages – позволяет перебрать указанное количество страниц с определенным шагом. Переменная $pagenum содержит текущий номер страницы при переборе.
  • Опция Check next page – необходимо указывать регулярное выражение, которое будет извлекать ссылку на следующую страницу (обычно кнопка "Вперёд"), если она существует. Переход между страницами осуществляется в рамках указанного лимита (0 - без ограничений).
  • Опция Page as new query – переход на следующую страницу происходит в новом запросе. Позволяет убрать ограничение на количество страниц для перехода.

Варианты использования

  • Скачивание контента
  • Скачивание картинок
  • Проверка кода ответа сервера
  • Проверка наличия HTTPS
  • Проверка наличия редиректов
  • Вывод списка URL редиректов
  • Получение размера страницы
  • Сбор мета-тегов
  • Извлечение данных из исходного кода страницы и/или заголовков

Запросы

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

http://lenta.ru/
http://a-parser.com/pages/reviews/

Варианты вывода результатов

A-Parser поддерживает гибкое форматирование результатов благодаря встроенному шаблонизатору Template Toolkit, что позволяет ему выводить результаты в произвольной форме, а также в структуированной, например CSV или JSON

Вывод контента

Формат результата:

$data

Пример результата:

<!DOCTYPE html><html id="XenForo" lang="ru-RU" dir="LTR" class="Public NoJs uix_javascriptNeedsInit LoggedOut Sidebar  Responsive pageIsLtr   hasTabLinks  hasSearch   is-sidebarOpen hasRightSidebar is-setWidth navStyle_0 pageStyle_0 hasFlexbox" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<!-- Google Tag Manager -->
<!-- End Google Tag Manager -->
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<base href="https://a-parser.com/" />
<title>A-Parser - парсер для профессионалов SEO</title>
<noscript><style>.JsOnly, .jsOnly { display: none !important; }</style></noscript>
<link rel="stylesheet" href="css.php?css=xenforo,form,public,parser_icons&amp;style=9&amp;dir=LTR&amp;d=1612857138" />
<link rel="stylesheet" href="css.php?css=facebook,google,login_bar,moderator_bar,nat_public_css,node_category,node_forum,node_list,notices,panel_scroller,resource_list_mini,sidebar_share_page,thread_list_simple,twitter,uix_extendedFooter&amp;style=9&amp;dir=LTR&amp;d=1612857138" />
<link rel="stylesheet" href="css.php?css=uix,uix_style&amp;style=9&amp;dir=LTR&amp;d=1612857138" />

Код ответа сервера

Формат результата:

$code

Пример результата:

200
примечание

Формат результата [% response.Redirects.0.Status || сode %] позволяет выводить статус 301, если в запросе присутствуют редиректы.

Получение данных о запросе

Переменная $response помогает получить о запросе и ответе сервера

Формат результата:

$response.json\n

Пример результата:

{
"Time": 3.414,
"connection": "keep-alive",
"Decode": "Decode from utf-8(meta charset)",
"cache-control": "max-age=3600,public",
"last-modified": "Tue, 18 May 2021 12:42:56 GMT",
"transfer-encoding": "chunked",
"date": "Thu, 27 May 2021 14:18:42 GMT",
"Status": 200,
"content-encoding": "gzip",
"Body-Length-Decoded": 1507378,
"Reason": "OK",
"Proxy": "http://51.255.55.144:25302",
"content-type": "text/html",
"Redirects": [],
"server": "nginx",
"Request-Raw": "GET / HTTP/1.1\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: en-US,en;q=0.9\r\nConnection: keep-alive\r\nHost: a-parser.com\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n\r\n",
"URI": "https://a-parser.com/",
"HTTPVersion": "1.1",
"Body-Length": 299312,
"Decode-Mode": "auto-html",
"etag": "W/\"60a3b650-170032\"",
"Decode-Time": 0.003,
"IP": "remote",
"expires": "Thu, 27 May 2021 15:18:42 GMT"
}

Получение редиректов

Запрос:

https://google.it

Формат результата:

$response.Redirects.0.URI -> $response.URI

Пример результата:

https://google.it/  -> https://www.google.it/

JSON с редиректами

Формат результата:

$response.Redirects.json

Пример результата:

[{"x-powered-by":"PleskLin","connection":"keep-alive","URI":"http://a-parser.com/","location":"https://a-parser.com/","date":"Thu, 18 Feb 2021 09:16:36 GMT","HTTPVersion":"1.1","Status":301,"content-length":"162","Reason":"Moved Permanently","Proxy":"socks5://51.255.55.144:29683","content-type":"text/html","IP":"remote","server":"nginx","Request-Raw":"GET / HTTP/1.1\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: en-US,en;q=0.9\r\nConnection: keep-alive\r\nHost: a-parser.com\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n\r\n"}]

Вывод статуса ответа сервера

Формат результата:

$reason

Пример результата:

OK

Время ответа сервера

Формат результата:

$response.Time

Пример результата:

1.457

Получение размера страницы

В качестве примера размер представлен в трех разных вариантах.

Формат результата:

[% "data-length: " _ data.length _ "\n";
"Body-Length: " _ response.${'Body-Length'} _ "\n";
"Body-Length-Decoded: " _ response.${'Body-Length-Decoded'} _ "\n" %]

Пример результата:

data-length: 70257
Body-Length: 23167
Body-Length-Decoded: 75868

Обработка результатов

A-Parser позволяет обрабатывать результаты непосредственно во время парсинга, в этом разделе мы привели наиболее популярные кейсы для парсера Net::HTTP

Вывод заголовков H1-H6

Добавить регулярку (опция Использовать регулярку) <(h\d+)[^>]+>(.+?)<\/h\d+>, в поле "Применить к" выбрать $pages.$i.data - Page content, в поле напротив регулярки выбрать модификаторы sg. В качестве типа результата будет автоматически выбран массив. В поле "Имя" указать headers, далее в "$1 to" указать tag, нажать на

плюс напротив и в появившемся новом поле "$2 to" указать content. В общем формате результата прописать вывод $p1.headers.format('$tag - $content\n').

Скачать пример

Как импортировать пример в А-Парсер

eJxtVNuO2jAQ/RVkIS2IW3loH6IVFYuK2ooSlmWfIJUsMgR3HTu1HboI8e+dcUIC
tE+Jj+ccn7nYJ+a4fbMLAxacZcH6xDL/zwI2BxcEX1erRWOrpYStEypp7Ie9/SfW
ZRk3Fgwx1nUg4jHseC4d656YO2aAMtvcOp0uwXqYmeInWKNEApYo3HEW0U4C70h4
bO03m7jTXv8cRZ1Rq9/53H7cbAYeHLEyblWI26SSLBFuDD8i6L9znhK2Bx6T2Uso
2cbEibvVyoFyLDpHUbU91SblVIJmNuyX5P7Og62HJhIbvUazZG426qFdK7/wA6w0
UndCQg1PcVWaaWK+QLsXxXbfvVNleBwLJ7TisjifXNaeXpX4nRNfaYzFXyPATo1O
EXLgBQg8XryvWdOvqbK55z4XHBbsuLTQZRatTjkaie93hAPDnTZhRn4QPzGtxlLO
4ACyDvP6T7mQVJ/xDknfSuL/Q8J/NM5VetdHHcD8MeihUvGrp/BHzYr1TCeXYkiR
CodrO9G5orZ9QPANIKtqNqewVBuojimVy9Nx/jNQMUbWLRtnNXSTxk1bbkGciZ1I
QkzAiBgukbla4SUL1USnmQTKS+VSYlssLOvxGNuyDbSoDd6TJ/4ItFXdNOa0lvb7
S2E1MwLH7yMZTLGS16eWklsu5etydr1DRLylWai+GHPXPj8YbO9cZoPBgPeKm9/f
6nRA9weHOdE4ZpjqOarehepBOV29DsHpjK37ZRdFDOVJEYhhwSz2hQXD81+VjpX2

Сбор мета-тегов

Добавить регулярку (опция Использовать регулярку) (<meta[^>]+>), в поле "Применить к" выбрать $pages.$i.data - Page content, в поле напротив регулярки выбрать модификатор g. В качестве типа результата будет автоматически выбран массив. В поле "Имя" указать meta, в "$1 to" указать item. В Формате результата использовать $p1.meta.format('$item\n').

Скачать пример

Как импортировать пример в А-Парсер

eJxtVO9v2jAQ/V8spBatg/XDvkRTJYqEtokRRtNPNJMscsk8/Gu2Q0FR/vfeJSGB
bp/ie37v3Z3PTsUC93u/duAheBZtK2abNYtYBjkvZWB3zHLnwdH2lq0gRNHXJFkj
3jMqFk4WULMrfTBqA74VunYRbdGiAE8SHjhLaaeAIwpuvygIfPvrIf3wMGYdnrRm
Re/QAdw5fkKw+a64IozkPY9KZCKAYmmdpj26ME5xamlk7yckmOQNcnszIvLLi74Z
Dx5P/ACJQXYuJAzwAqMu5wi7ANo9+4wn4Uj98iwTQRjNZZuS6hnKeNbib0l6bZCL
SyfAL5xRCAVoDAg8ncvdslET03mVjfZnq2FRzqWHO+ax1AXHQrL3O9iX48G42FI9
iFfM6JmUSziAHGiN/2MpZIbzneUo+tYJ/0+J//Go+/YuUx3AvTqsoXdposf4x6DK
zNIU58OQQomAsZ+bUtOkPiG4B7D9ma2IpoyDPk3n3GXHK2xBZ8gcRjazA3TVxtVY
rsGd0bkoYmzAiQzOzFIn+E5iPTfKSqC+dCkljsXDZrgeM9+NgYKhwPfieZPi6oUF
Y6T//tSWap3A6/eZClR4kpdZO8sdl/J5s7zcYcOVwuB3CNZH0yn/2L7dyc6o6avY
i6nQGRynjDwCFAZvF3ZYp/0j738F1cVTj6oaJ/bHr1sOtUcMxPCcPI6DRff1GzD1
gDE=

Варианты прохода по пагинации

Использование Use pages

Use pages. Данная функция позволяет проходить по пагинации с указанием наперед известного числа страниц. Для примера возьмем одну из категорий на сайте каталога товаров https://www.proball.ru/catalog/myachi/. Вверху и внизу мы видим панель пагинации. При клике по пиктограмах с номерами страниц можно увидеть в строке браузера, как осуществляется передача параметра с номером страницы в конце запроса:

https://www.proball.ru/catalog/myachi/?PAGEN_1=1

Use pages - это своего рода счетчик, который фактически в переменную $pagenum подставляет по порядку номера, увеличивая их на то значение, которое мы укажем

Использование Use pages

Как видно на скриншоте, в формате запроса парсера в нужном месте используется переменная $pagenum. Функция Use pages переберет и подставит в запрос все значения, фактически мы будем получать ссылки для запроса

https://www.proball.ru/catalog/myachi/?PAGEN_1=$pagenum

где вместо переменной $pagenum будет подставлен номер страницы, начиная от 1 и до 4 с шагом 1. Таким образом, получается проход по страницах нужного диапазона. В этом заключается ограничение данного метода - нужно заранее знать количество страниц, которые есть в пагинации. Очевидно, что при одновременном парсинге нескольких категорий, количество страниц везде будет разное, и как выход, мы можем просто указать большее количество предполагаемых страниц. Но это не совсем правильно, поэтому есть более оптимальное решение, о котором речь пойдет дальше

Скачать пример
eJx1VNtu2kAQ/ZVqhJSgUAhV+2I1jSgqvSgCmtAnjKKtPTZu1rubvXAR8r931jY2
pOmTvWfPXM7M7BzAMvNk5hoNWgPB8gCq/IcAnME5SxF6oJg2qP31EqZog+DbYjEn
PMaEOW6hdwC7V0g2coNaZ7E3ymI6p1LGY1meN4w7oizfXV+vitYicsbK/B5N6Qh0
9RMsKWiKxgdhlsHK36S4I4OP7E3EmTE3IaQU6m1mMX98XCOLUYcQhuZqrTGh28v+
1W03hE9Q2y6qgGkTpQaY1mxPYPmdstxjPBNPpiF65SUEp5lLZTMpzFFqXS7TSoWh
9xrHmecxDsGhEvVgUdW3/hxJJ3y930NR/L+Szw71PpE6Z/YkQqeEb+ejr1+mj8Ob
jvcnXA7FatUkP6mMiKyG/VJYv/JzebG2VplgMNhut32l5W/GeV+7jieFobjothV4
YBtcSHKSZBxbeEKnumQdahT626P3bj8ym7MKVJn4arbZ/RLZcylFSOJ6ORmaiZY5
QRZ3tgb3RxXLWrMfCVfa/qxsIEgYN9gDQ6lOGCUSv7yhUdHMSj2rO0cNkWLE+R1u
kLe00v9nl3GaKDNKyOh7bfg6ZfaPj6KRdxqKOrrVlENLiuWdTI/anxBVU42pR3Kp
sXFQR6790otVKPxgtM0YqRY6S/Cs4OdgJEWSpbN62I5MJxa0FmZiLHPF0WcsHOc9
P+P3beNHpi6wP7QJvjQelyEorWZdgJWSmx8PVapKZzRYH5rmE/r6XA4iWgVcpoN8
z6J1NiBbQjCVNA1+c5XjQi9Hl/J6gDvFRIxUEasdFqti1ayyZuEdThZacKAHCH/M
vOJ4VZ5BGJXHUBcgGBZ/AXULzRU=

Использование Сheck next page

Сheck next page - это еще одна функция, которая позволяет организовать проход по пагинации. Особенность ее использования заключается в том, что для перехода на следующую страницу, нужно использовать регулярное выражение, которое будет возвращать ссылку на следующую страницу. Это более удобный и наиболее часто применяемый способ. Но применить его для https://www.proball.ru/catalog/myachi/ не получится, т.к. в коде нету ссылок на следующие страницы. Ссылки там генерируются скриптом. Поэтому возьмем в качестве примера сайт http://www.imdb.com/search/name?gender=female. Здесь есть пагинация как в начале так и в конце списка. Посмотрев и проанализировав исходный код, можно увидеть наличие ссылки, которая позволяет переходить на следующую страницу:

img

  • в поле Next page RegEx запишем регулярное выражение
  • в поле Лимит укажем количество страниц, которое нужно пройти
Использование Сheck next page

В примере указано 4. Указав лимит, мы определяем, сколько страниц парсер должен пройти. В нашем случае будет пройдено 5 страниц, так как отсчет начинается с 0. Если указать лимит 0, то парсер будет работать до того времени, пока не пройдет все страницы в независимости от их количества. Это очень удобно использовать, когда нужно спарсить все результаты со всех страниц

Скачать пример
eJx1VGFT2kAQ/SuZG2aUggGq4DSijnXG2qpAlY4fCM6cZANXL7n07iJYhv/e3RAS
sO0XuH3ZvX1vd2+XzHLzYgYaDFjDvNGSJdmZeWwyg8lLDxZ2wKfA6izh2oAmpxHr
gfW86+FwgHgAIU+lZfUls28JYKR6Ba1FQEEiQHuqVHCpMvuVyxRdRh+bzfHq/xEp
ZjrAtLEtY9id+i2k5I2223T2H0UcqLlxekOn47ZOHLQ7RyfOonNUdS6SRMIjPN8I
22gfHruHHWf/5np4d1t3pHgB5wsKU1XncqZVBI32J7fpHjaPW26r1XYeeMi1yMPY
FsVJaqyK7sFkWpleH7wR1mUKhurALWdj+jKFBQZ0TcJjZyK5Mac+k8JY1CQsRAdI
HRZuzWdnvm8+7Lu18yodur7foBhCa10+ejob19Yeo6fueMuJn7E8zXDNbVoQygGu
NX9DMPvv8YgwSm0KR+oji9PoGZGYHHbakVihYrPpxvtJ2DSky52ZhhDVrTUwIv5O
MFXnIMZYh34y02fELAgEJeGSecvdDLciEjSAR2y1Go8LwldKR5zwStJyMzFumEH7
exUS4lRIh+/He9VS5QN/haHCoFBIKOErtPKyVLBvQF83t1Vdu7A7DNeZqWIlmx+x
+JUVIVboi0ctwFzhQCFkIbuAwLcN6xGrZDZNSJrFfl/HMC/k0kCdGaR6xZFI8P4L
itXcKt3P24IFU/GFlLfwCrJ0y+7/nAoZ4DO9CDHoax74b5f+X3esCnnbqfBtzjVy
KJ0CdaumG+0vAElRjR4hkdJQXJBnzu/FTZNATENVNgOfawHtENwp+C44UXEopv18
bWw803iI66wfX6oINwAxjlMp67RO7svGX5i8wGSUBN8HX2YpkFax4JhVSppvD2uq
iRY4WO2i+YjOrE28RmM+n7siCp7diYoaBriezBo0m+e40FDCaQgRz6ZxgqM3VTgU
tHizqaHhMZQKFrgJAsCyWJ3CarwaFxu42NbLrT3sLVfYmJ9msPYhaeSBGNbIYCuY
11r9ASIaBUM=

Как было сказано выше, есть возможность динамически ограничивать количество страниц в Use pages. Для этого нужно совместно использовать Use pages и Сheck next page. Дополним пример, который был рассмотрен при описании Use pages и добавим в него функцию Сheck next page:

Использование Сheck next page (2)

Эти две функции в паре работают следующим образом: Use pages обеспечивает проход по страницам, а Check next page проверяет, существует ли следующая. Как только Check next page не найдет следующей страницы, парсинг этой категории будет остановлен, не дожидаясь прохода по всему количеству, которое указано в Use pages. Совмещая эти функции, мы добавляем эффективности в работе парсера, экономя время и ресурсы

Скачать пример
eJx1VNtuGjEQ/ZXKQkqiEC6V+rJqGtGo9KIIaEKfWBS5u7OLi9d2bC8EIf69M3uF
XJ52fTyXM2fGs2eeu7WbWXDgHQsWe2aKfxaw3MGMp8C6zHDrwNL1gk3AB8GP+XyG
eAwJz6Vn3T3zOwPoozdgrYjJScR4TrWOb3Vx3nCZo8ni42CwPLQeUe68zu7BFYGY
LX+CBSZNwVES7jlb0k0Kz+jwmX+IJHfuOmQpproSHrLHxxXwGGzIwtBdriwkeHve
u7y5CNkXVvnOy4Rpk6UCuLV8h2DxnfCMMCnU2jWGVHkBsWPm2nihlatLreRybals
SFHjWJAdlyzYl0U9eDDVLZ0jnSvSezgYsMPhfS2fcrC7RNuM+6McnQK+mY2+f5s8
Dq87FFHlGXufaLSCaD2BZ191t45EQl8pxK8oxjVpGV+G7FUNJ/53IhNEnqgvl41g
45Im0jPDXiFmr2R+frby3rig399utz1j9V8uZc/mHTIKQ3V20ar+wDcw1xgkERJa
eIynqk0d5Ax0W0e/6EVuc8K4ZEIdbNn9UeKpKFlptCUBBbix1RlCHgurwF1dxaJS
mcYwL3x/lz4sSLh00GUOqY45Eolf3uB4Wu61nVZNQAG1Gkl5BxuQrVkR/2suJE6x
GyXo9LNyfNtk+irGoSnvOBXO0NYih9Yo1nc6rWtfA5hGjQkhmbbQBKgyV3FxSxhQ
NEJtM0amhU4Ingh+CkZaJSKdVuNdW+Zqjqtoqm51ZiQQY5VL2aV3dd82fuQqgenQ
EnzpfFukoKGuVxTzWkv366GkaqzAwfrUNB/Rt+eyH+GrkDrtZzserUQffRGBVOM0
0LYsxgWfmC3K6zJ4NlzFgIoMD8vDstmdzYbdH23QYI/vnf1zs9KGSiILxFAbhy2g
KP8Byg3yDQ==

Использование макросов подстановок

Макросы подстановок позволяют реализовать последовательную подстановку значений из указанного диапазона

Использование макросов подстановок

Данный пресет будет работать следующим образом. Указав в формате запроса шаблон:

$query?PAGEN_1={num:1:10}

мы добавляем подстановку значений от 1 до 10 (диапазон можно указать любой) в сам запрос. Таким образом мы получаем запросы, оторые обеспечивают проход по нужному количеству страниц, вида:

https://www.proball.ru/catalog/myachi/?PAGEN_1=1
https://www.proball.ru/catalog/myachi/?PAGEN_1=2
...
https://www.proball.ru/catalog/myachi/?PAGEN_1=10

Использование макросов подстановок для прохода по пагинации похоже на функцию Use pages и имеет такие же ограничения, то есть нужно указывать конкретный диапазон значений. Преимуществом данного метода можно считать то, что через макросы подстановок можно подставлять разные значения, как числовые, так и текстовые, например, слова или выражения. Таким образом мы можем более гибко вставлять нужные части в запросы или формировать сами запросы из частей, которые будут размещаться в разных файлах, если этого требует задание

Скачать пример
eJxtVFtP2zAU/iuTVQkQXUsn7SUaQx2iu4i1HXRPTYW85CT1cGzPx+lFUf47x26a
AOMp8Xcu3+dzccUcx0ecW0BwyKJlxUz4ZxH7yROr8WbH+sxwi2C9fcmm4KLo22Ix
JzyFjJfSsX7F3N4ABekNWCtSIKNI6ZxrnV7rcN5wWZLL8sPFxaruIpISnS7uAEMi
Zg8/0ZJIc0BPwh1nK2/JYUcBn/i7RHLEy5jlRPVeOCgeHtbAU7Axi2M8X1vIyHo6
OL86i9ln1sQuDoR5y9IA3Fq+JzB8p7zwmBTqEVtHf/MAsVW9WrXoRNuC+1L1zGgQ
IgZZgE5P1s4ZjIbD7XY7MFb/4VIObNnzTnGsTs661Pd8AwtNSTIhoYMndGq09KgC
4K3H7GeDBDdecJoKJ7Ti8qDEy+zU/Vbiny84U5p86dcKwInVBUEOdq4B98dbLFkv
nK/m468304fRZaXKIhpFo4val78M6X4d0rAo4xKhz5DUTzhpS19bqC2WO21nxksk
vGJajaW8hQ3Izi1QfimFpO7hOKOg703g2y6z/3LU7Y2fU9Ecbi1p6JxSfavzYzke
AUxboKlHCm2hTdAwN3lpPQwoP85df8amg14IfNGDl2CiVSbyWbMiR89SLWgHZ+pa
F0aCV6xKKangCHfdLIyxKbA/dAJfB18HCpLVriZzWkv8cX+QaqygWfvYzgOhb4/q
MKG1kzofFnuerMWQYgmBXNt9eCbCBPlBQs8BO8NVClQPZ0uoaUvaR6N9W6pnT0dU
1dSRvzg/+Pg7eQ/CqDhIPWDRqH4C36ybyg==

Использование Page as query

Для уменьшения потребления памяти логику можно определить с помощью опции Page as query. При ее активации функции Check next page и Use pages будут каждую следующую страницу подставлять в запросы как отдельный самостоятельный запрос, тем самым не накапливая их контент в памяти. Page as query позволяет также определить, повышать ли уровень запроса Increase (аналогично работе инструмента tools.query.add), или нет Keep

Использование Page as query
Скачать пример
eJx1VNty2jAQ/RWPJg/QEts0gUydpBnCDE0bAiQhkwfgQbHXoCJbriQDKcO/dyXM
tc0LeFd7OXv2siSaqqnqSVCgFQkGS5LZbxKQHh1DQ3Vg/piDfCcVklGpQBqrAemA
DoK7fr+H+ghimnNNKkui3zNAVzEDKVkE+MgilMdCRE1h5RnlOZoMvvj+aPWxR46Z
ThFAqnc+5EH8YZxTr+b6TumVpZGYK6fTd+pu9dJBuX5+6Szq52WnkWUcXuHtnmmv
dnbhntWd0v1d/6FdcTibgvMdwqkoO82JFAl4ta+u7575F1W3Wq05zzSmkhVuZB9i
pplI1QZhOMEgHVhow9MeyCvqTCTE10NScj/flIdkOFSfQ06VQhVnSmNhGbqcpujr
mB8rDgnGoFHETBLKSbA8zNBmCTNd8cnqY0zZccsKUFrmcBx9CpBZszbMADX+ajUa
VQh2H3upWkIm1OQ7yaquZpqbEou3ZzqDvsC3mO2rWyh1aGJgnURUg3l1YxunVHb1
Qh8UuE5ghmmX9CVlvy2HqUBb/JQMVAt7hCoNNoBRvm/ADciJlQmGyK3v49qHBDHl
CktWCLVFEUh0/MKwD1QL2S0YREZE2uDcsrEzs/Fvc8YjnPxGjE4/Csf/m3T/ibHa
lrefCsd9LhHDNoqVbrsPO69ItMUYK4/esG5u2o+yaoo8Xc9BxbZwy1nHcJYICds0
ReQiO+54BqmZkl3LcE+2qoMyDtqyp1wSJXIZmgX2ESHV1HBfDKOEMSxscPOPm2Dn
5lvJ/XRTvhoOvbW4MeivnczsamF6uZ6y0QoDhiKN2bhb3IQNmjzt47Hqpk2R4Hob
7tKc84q5FU+7EWyootVG2JFw7Ny0KQy9m+uFMARXP5/XdGSSIaqaAZtgt/azFiFD
yvnLU3v/hezGFoWJ1lngefP53GVJ9OaGIvEUUBlOvBT35AavG9J6HUNC7R6FuDRj
geOM5RoWinu7Pc7LvasbLPEMkF+qt7YxtRoL1CFpCvtPgurqL0u6AK8=

Возможные настройки

Название параметраЗначение по умолчаниюОписание
Good statusAllВыбор какой ответ с сервера будет считается успешным. Если при парсинге будет другой ответ от сервера, то запрос будет повторен с другим прокси
Good code RegExВозможность указать регулярное выражения для проверки кода ответа
Ban Proxy Code RegExВозможность банить прокси на время (Proxy ban time) на основе кода ответа сервера
MethodGETМетод запроса
POST bodyКонтент для передачи на сервер при использовании метода POST. Поддерживает переменные $query – URL запроса, $query.orig – исходный запрос и $pagenum - номер страницы при использовании опции Use Pages.
CookiesВозможность указать cookies для запроса.
User agent_Автоматически подставляется user-agent актуальной версии Chrome_Заголовок User-Agent при запросе страниц
Additional headersВозможность указать произвольные заголовки запроса с поддержкой возможностей шаблонизатора и использованием переменных из конструктора запросов
Read only headersЧитать только заголовки. В некоторых случаях позволяет экономить трафик, если нет необходимости обрабатывать контент
Detect charset on contentРаспознавать кодировку на основе содержимого страницы
Emulate browser headersЭмулировать заголовки браузера
Max redirects count7Максимальное кол-во редиректов, по которым будет переходить парсер
Follow common redirectsПозволяет делать редиректы http <-> https и www.domain <-> domain в пределах одного домена в обход лимита Max redirects count
Max cookies count16Максимальное число cookies для сохранения
EngineHTTP (Fast, JavaScript Disabled)Позволяет выбрать движок HTTP (быстрее, без JavaScript) или Chrome (медленнее, JavaScript включен)
Chrome HeadlessЕсли опция включена, браузер не будет отображаться
Chrome DevToolsПозволяет использовать инструменты для отладки Chromium
Chrome Log Proxy connectionsЕсли опция включена, в лог будет выводиться информация по подключениям chrome
Chrome Wait Untilnetworkidle2Определяет, когда страница считается загруженной. Подробнее о значениях.
Use HTTP/2 transportОпределяет, использовать ли HTTP/2 вместо HTTP/1.1. Некоторые сайты сразу банят, если использовать HTTP/1.1, а некоторые наоборот, не работают по HTTP/2.
Try use HTTP/1.1 for Protocol errorУказывает парсеру повторить запрос с HTTP/1.1 если был включен HTTP/2 и получена ошибка протокола (т.е. если сайт не работает по HTTP/2)
Don't verify TLS certsОтключение валидации TLS сертификатов
Randomize TLS FingerprintДанная опция позволяет обходить бан сайтов по TLS отпечатку
Bypass CloudFlare with ChromeАвтоматический обход проверки CloudFlare
Bypass CloudFlare with Chrome Max Pages20Макс. кол-во страниц при обходе CF через Chrome
Bypass CloudFlare with Chrome HeadlessЕсли опция включена, браузер не будет отображаться во время обхода CF через Chrome