You are here

Файл checkparams.xml

Файл checkparams.xml является главным файлом конфигурации программы CheckParams и содержит в себе все настройки как самой программы, так и всех встроенных модулей.

Ниже предоставлена копия файла checkparams.xml из дистрибутива.

  1. <!--
  2.     Настройки программы CheckParams.
  3.    
  4.     Вся документация по программе доступна на сайте:
  5.     http://checkparams.com/ru/docs
  6.  
  7.     Общие сведения, которые пригодятся при редактировнаии настроек:
  8.  
  9.     Время.
  10.     Все настройки программы, где используется время, задаются в миллисекундах целым числом (1 секунда = 1000 мс)
  11.     В числах можно использовать множители 's' (секунды), 'm' (минуты), 'h' (часы), 'd' (дни), которые
  12.     должны быть записаны сразу после числа без пробелов, маленькой буквой.
  13.  
  14.     Примеры:
  15.     500 = 500 миллисекунд (0.5 секунды)
  16.     1s = 1 секунда (1000 мс)
  17.     2m = 2 минуты = 120 сек = 120000 мс
  18.     3h = 3 часа
  19.     4d = 4 дня
  20.    
  21.     Экспериментальная поддержка вложенных файлов конфигурации.
  22.     Указав тег <include file="file.xml"/> в любом месте файла конфигурации внутри тега <settings/> можно загрузить часть настроек из файла file.xml, например, настройки модуля.
  23.     Файл с дополнительными настройками обязательно должен содержать ТОЛЬКО ОДИН корневой тег, который будет вставлен в основной файл конфигурации непосредственно перед тегом <include/> при загрузке.
  24.     Количество тегов <include/> может быть любым, вложения тегов <include/> не поддерживаются (т.е. из файлы с дополнительными настройками, подключаемые тегом <include/> не должны содержать в себе другие теги <include/>).
  25.  
  26.     Общие настройки.
  27.     Все настройки и указанные ниже файлы загружаются при запуске самой программы, а не при нажатии на кнопку start.
  28.     Сохраняются настройки и файлы при закрытии программы, а не при остановке. Это необходимо учитывать, меняя файл конфигурации.
  29.     Т.е. сперва нужно закрыть программу, а уже потом что-либо менять, потом её опять запускать.
  30.     Если конфиг программы был изменён пользователем во время её работы, про при закрытии она сохранит актульные данные
  31.     в файле вида checkparams-ДАТА-ВРЕМЯ.xml, чтобы не перезаписать изменения, которые внёс пользователь.
  32.  
  33.     Не рекомендуется использовать имена файлов, содержащие кириллицу.
  34.     Если в имени файла отсутствует полный путь, то он читается/записывается в текущей директории, из которой запущена программа.
  35.  
  36.     Параметры:
  37.     usemacroses = имя файла с макросами, если их надо загружать.
  38.     autosave = сохранять изменённые настройки в файл при закрытии программы. 1 = включено, 0 = выключено.
  39.     check_for_updates = проверять ли обновления программы при старте. 1 = включено, 0 = выключено. При проверке на сервер передаётся ТОЛЬКО версия программы и ничего больше.
  40.     onBeforeLoadSettings = имя функции из файла со скриптами, которую нужно вызвать после того, как XML-файл с настройками будет загружен в память, но перед тем, как эти настройки будут считаны из памяти самой программой. В функции можно читать или модифицировать настройки перед их обработкой программой, а так же инициализировать нужные данные в скриптах перед началом работы. Например, можно изменять имена файлов с данными или загружать дополнительные настройки для самих скриптов. Отсутствующий или пустой параметр = не вызывать функцию.
  41.     onAfterSaveSettings = имя функции из файла со скриптами, которую нужно вызвать после того, как программа сохранит изменённые настройки из памяти в XML-файле, но перед записью этого XML-файла на диск. В функции можно сохранять дополнительные настройки скриптов или совершать иные действия, которые необходимы перед закрытием программы. Отсутствующий или пустой параметр = не вызывать функцию.
  42. -->
  43.  
  44. <settings usemacroses="checkparams_macroses.xml" autosave="1" check_for_updates="1" onBeforeLoadSettings="OnBeforeLoadSettings" onAfterSaveSettings="OnAfterSaveSettings">
  45.  
  46.   <!--
  47.       Косметические настройки. Положение окна программы, его размеры и заголовок.
  48.       Могут использоваться в случае необходимости запустить несколько приложений одновременно из разных директорий.
  49.  
  50.       Параметры:
  51.       x, y = координаты левого вернего угла окошка
  52.       sx, sy = размеры окошка в пикселях по ширине и высоте
  53.       caption = заголовок окна с программой, можно использовать разные заголовки для разных копий программы при параллельной проверке.
  54.       minimize_to_tray = сворачивать окошко в иконку около часов в панели задач ("1" = включено, "0" = выключено)
  55.   -->
  56.  
  57.   <mainwindow x="421" y="200" sx="870" sy="414" minimize_to_tray="1">
  58.     <caption>Check params</caption>
  59.   </mainwindow>
  60.  
  61.   <!--
  62.       Настройки записи логов.
  63.  
  64.       Параметры:
  65.       enabled="1" = записывать логи, enabled="0" = не записывать логи,
  66.       file = имя файла с логом программы
  67.       reset_on_start="0" = файл дописывается, т.е. старые логи не удаляются, reset_on_start="1" = файл при запуске программы очищается
  68.       show_network_errors="0" = низкоуровневые сетевые ошибки не показываются в логах, show_network_errors="1" - все ошибки показываются в логах
  69.       level="" = параметр, позволяющий отключать вывод сообщений в логи. level="0xFFFFFFFF" - показывать все сообщения, level="0" - не выводить в логи сообщения вообще.
  70.   -->
  71.  
  72.   <logs enabled="1" file="checkparams.log" reset_on_start="0" show_network_errors="1" level=""/>
  73.  
  74.   <!--
  75.       Настройки модуля работы со скриптами
  76.      
  77.       Параметры:
  78.       enabled="1" - включить модуль, enabled="0" - выключить модуль
  79.       src = имя файла со скриптами
  80.       language = язык, на котором написаны скрипты. Поддерживаемые значения: VBScript, JScript (доступны по умолчанию без установки дополнительных программ), PerlScript (необходимо установить ActivePerl), PHPScript (необходимо установить php5activescript.dll). Доступна работа с любыми другими языками, для которых имеется поддержка технологии ActiveScript.
  81.   -->
  82.  
  83.   <script_engine enabled="0" src="scripts/checkparams.js" language="JScript" />
  84.  
  85.   <!--
  86.       Параметры модуля статистики.
  87.  
  88.       update_interval = интервал обновления статистики в окошке, в миллисекундах, т.е. 500 = 0.5 секунды
  89.       onProcessStatsInfo = имя функции из файла со скриптами, которую необходимо вызвать при обновлении статистики. В функцию 1 параметром передаётся текст статистики, из функции возвращается текст, который необходимо отобразить в окошке программы. Данная функция может использоваться для отображения дополнительной статистики, обсчитываемой скриптами. Отсутствующий или пустой параметр = не вызывать функцию.
  90.   -->
  91.  
  92.   <statistics update_interval="500" onProcessStatsInfo="OnProcessStatsInfo" />
  93.  
  94.   <!--
  95.       Общие настройки проверок.
  96.  
  97.       Параметры:
  98.       work_threads = кол-во потоков для проверки параметров ссылок, кол-во потоков для проверки прокси настраивается отдельно ниже
  99.       autostart = автоматический запуск проверок ссылок при открытии программы, 1 = включено, 0 = выключено
  100.       autostop = автоматическая остановка (без закрытия) программы после проверки всех данных. 1 = включено, 0 = выключено
  101.       autoclose = автоматическое закрытие программы после проверки всех данных, чтобы программа закрылась, необходимо включить параметр autostop, 1 = включено, 0 = выключено
  102.       onBeforeStart = имя функции из файла со скриптами, которую нужно вызвать после того, как нажата кнопка Start, но перед запуском проверки. Может использоваться для открытия дополнительных файлов, соединений с базой данных и т.д. Отсутствующий или пустой параметр = не вызывать функцию.
  103.       onAfterStop = имя функции из файла со скриптами, которую нужно вызвать после того, как проверка ссылок полностью остановится. Может использоваться для закрытия открытых ранее дополнительных файлов, соединений с базой данных и т.д. Отсутствующий или пустой параметр = не вызывать функцию.
  104.       thread_stack_size = размер зарезервированной памяти под стек для каждого потока. 0 = использовать настройки по умолчанию. НЕ РЕКОМЕНДУЕТСЯ изменять.
  105.   -->
  106.  
  107.   <check_engine work_threads="100" autostart="0" autoclose="0" autostop="1" onBeforeStart="OnBeforeStart" onAfterStop="OnAfterStop" thread_stack_size="0">
  108.  
  109.     <!--
  110.         Настройки модуля управления программой посредством протокола HTTP.
  111.         С помощью этого модуля можно удалённо управлять программой через браузер или через скрипты. Например, когда программа работает на сервере.
  112.         В простейшем случае (например, для просмотра статистики) нижеприведённые ссылки достаточно открыть в браузере.
  113.  
  114.         Параметры:
  115.         bind_to = IP-адрес, на котором принимать входящие соединения. 0.0.0.0 = принимать соединения на всех доступных IP-адресах.
  116.         port = порт, на котором принимать входящие соединения. 0 = не принимать. При запуске нескольких копий программы на одном компьютере необходимо указывать разные порты.
  117.         onHttpServerRequest = имя функции из файла со скриптами, которую нужно вызвать перед обработкой запроса встроенным HTTP-сервером. Данная функция может использоваться в качестве фильтра запросов к встроенному серверу, через неё можно организовать ограничение доступа к HTTP-серверу. Отсутствующий или пустой параметр = не вызывать функцию.
  118.  
  119.         Подробное описание команд HTTP-сервера доступно по адресу http://checkparams.com/ru/node/143
  120.     -->
  121.  
  122.     <http_server bind_to="127.0.0.1" port="7777" onHttpServerRequest="OnHttpServerRequest"/>
  123.  
  124.     <!--
  125.         Файл со списком ссылок или доменов для проверки параметров.
  126.  
  127.         Имя файла со списком ссылок, которые надо проверять. При закрытии программы, она записывает в этот файл остаток ссылок,
  128.         которые еще не успели провериться. Если все ссылки проверились, то файл будет пустой. По умолчанию программа читает весь
  129.         список ссылок в память целиком, поэтому для очень больших файлов необходимо включить опцию direct_read.
  130.  
  131.         Файл должен содержать ссылки (домены) в любых нижеприведённых форматах (1 строчка файла = 1 ссылка):
  132.         google.com
  133.         google.ru
  134.         yandex.com/index.php
  135.         yandex.ru/index.php
  136.         yahoo.com:80/index.php#test
  137.         http://google.com
  138.         http://yahoo.com:80/index.php#test
  139.  
  140.         Файл может содержать результаты предыдущего запуска программы, в этом случае программа допишет новые параметры и заголовок csv-файла в файл результатов.
  141.         Т.е. можно проверить какие-либо ссылки, к примеру, в модуле Google PR, отобрать подходящие варианты, переименовать results.csv
  142.         обратно в domains.txt и уже только нужные ссылки проверить в остальных модулях.
  143.  
  144.         Параметры:
  145.         filename = имя файла со ссылками
  146.         make_lowercase="0" = не изменять регистр символов в ссылках
  147.         make_lowercase="1" = переводить ссылки в нижний регистр при загрузке (DOMAIN.COM => domain.com)
  148.         direct_read = позволяет читать строчки со ссылками из файла напрямую, без загрузки всего файла целиком в память. "остаток" ссылок в файл при этом не сохраняется при выходе, 1 = включено, 0 = выключено
  149.         direct_skip = кол-во записей с начала файла, которое надо пропустить при чтении напрямую из файла.
  150.         direct_scan = включает подсчёт количества ссылок в файле в режиме direct_read. 1 = включено, 0 = выключено
  151.         onLoadUrl = имя функции из файла со скриптами, которую необходимо вызвать для получения новой ссылки для её дальнейшей проверки. В данной функции можно читать данные из файлов произвольного формата, баз данных и так далее. Если указано имя функции, указанный файл со ссылками не открывается на чтение, т.к. ссылки (по одной) возвращает сама функция. Отсутствующий или пустой параметр = не вызывать функцию.
  152.     -->
  153.  
  154.     <urls filename="domains.txt" make_lowercase="0" direct_read="0" direct_skip="0" direct_scan="1" onLoadUrl=""/>
  155.  
  156.     <!--
  157.         Имя файла с результатами.
  158.         Файл результатов имеет формат CSV, позволяющий как обрабатывать его скриптами, так и открывать его в Excel и других программах.
  159.  
  160.         Параметры:
  161.         filename = имя файла с результатами. Файл создаётся, если он не существует. Пустое значение ("") - не создавать файл с результатами и не записывать в него данные.
  162.         reset_on_start="0" = файл дописывается, т.е. старые результаты не удаляются
  163.         reset_on_start="1" = файл при запуске программы очищается
  164.         skip_failed_results="0" = в файл результатов записывается все данные по ссылке, даже если какие-то модули не смогли проверить какой-либо параметр
  165.         skip_failed_results="1" = если хоть один модуль не смог проверить параметр ссылки, то все данные по этой ссылке не попадают в файл результатов
  166.         write_header="1" = включает запись "заголовка" csv-файла с названиями полей
  167.         write_header="0" = выключает запись "заголовка" csv-файла с названиями полей, используется при записи скриптами файлов с результатами в собственном формате, например, XML
  168.         onBeforeWriteResultLine = имя функции из файла со скриптами, которую нужно вызвать перед тем, как строчка с готовыми данными будет записана в файл с результатами. В данной функции можно менять формат данных или отсеивать ссылки с нужными параметрами. Отсутствующий или пустой параметр = не вызывать функцию.
  169.  
  170.         Формат файла с результатами:
  171.         url;поля модуля 1;поля модуля 2;поля модуля 3; и т.д.
  172.  
  173.         В файл результатов записываются данные от всех включенных модулей. Если какая-либо из проверок отключена, то соответствующие поля просто отсутствует в файле с результатами.
  174.         В имени файла можно использовать макросы. Например, filename="results_%DATE_%Y-%m-%d-%H-%M-%S%%.csv" создаст файл результатов с датой в имени.
  175.     -->
  176.  
  177.     <results filename="results.csv" reset_on_start="1" skip_failed_results="0" write_header="1" onBeforeWriteResultLine="OnBeforeWriteResultLine"/>
  178.  
  179.     <!--
  180.         Запись в файл ссылок, по которым были ошибки при проверке.
  181.         Если хотя-бы один из нескольких проверяемых параметров не был успешно проверен, то программа сохраняет ссылку в нижеуказанном файле.
  182.         Данные настройки используются для повторной проверки тех ссылок, которые по каким-либо причинам не были успешно проверены.
  183.  
  184.         Параметры:
  185.         enabled = разрешение сохранения ссылок. enabled="1" - включить запись, enabled="0" - выключить запись
  186.         filename = имя файла, в котором будут сохраняться ссылки, по которым были ошибки во время проверки
  187.         reset_on_start="0" = файл дописывается, т.е. старые результаты не удаляются
  188.         reset_on_start="1" = файл при запуске программы очищается
  189.     -->
  190.  
  191.     <failed_results enabled="0" filename="results_failed.csv" reset_on_start="1"/>
  192.  
  193.     <!--
  194.           Настройки модуля работы с прокси.
  195.  
  196.           Модуль прокси начинает свою работу (скачивание и проверка прокси) одновременно со стартом модулей проверок параметров ссылок при нажатии на кнопку Start в программе,
  197.           заканчивает работу после нажатия на кнопку Stop. Если необходимо, чтобы программа просто проверяла прокси без проверки ссылок, то необходимо включить
  198.           опцию start_before_engine, тогда модуль будет запущен сразу после загрузки самой программы, на кнопку Start можно будет не нажимать.
  199.  
  200.           Параметры:
  201.           enabled = разрешение работы модуля прокси. enabled="1" - включить, enabled="0" - выключить
  202.           errors_to_block = кол-во ошибок подключения в модуле проверки параметров через прокси, после которого прокси будет временно заблокирован, 0 = не блокировать
  203.           errors_to_delete = кол-во ошибок, после которых прокси удаляется из списка прокси в модуле проверки
  204.           unblock_every = вероятность разблокирования прокси (для повторной проверки) при следующей попытке подключиться, 0 = не разблокировать вообще, 2 = разблокировать каждую вторую попытку подключения, 3 = каждую третью и так далее
  205.           start_before_engine = позволяет запускать модуль проверки прокси сразу после открытия самой программы, используется для проверки прокси, 1 = включено, 0 = выключено
  206.     -->
  207.  
  208.     <proxies enabled="0" start_before_engine="0" errors_to_block="5" errors_to_delete="20" unblock_every="50000">
  209.  
  210.       <!--
  211.           Настройки модуля автообновления и проверки прокси
  212.  
  213.           Параметры:
  214.           threads = количество потоков, используемых для скачивания и проверки прокси.
  215.           update_interval = интервал обновления рабочих прокси в модулях проверки, в миллисекундах. Например, при значении 5s рабочие прокси будут каждые 5 секунд добавляться в списки прокси у модулей проверок параметров ссылок.
  216.           good_alive_time = время, в течение которого прокси считается рабочим и не проверяется после первой удачной проверки, по прошествии этого времени прокси опять проверяется, в миллисекундах
  217.           remove_deleted_after = время, в течение которого нерабочие прокси остаются в списке (чтобы предотвратить их повторное скачивание), в миллисекундах
  218.           errors_to_delete = количество ошибок подключения через прокси, после которого прокси считается нерабочим и далее уже не проверяется
  219.           min_check_interval = минимальное время между проверками одного и того же прокси (защита от перегрузки прокси), в миллисекундах
  220.           deleted_recheck_interval = минимальное время в миллисекундах между перепроверками одного и того же удалённого прокси. 0 = не перепроверять удалённые прокси. Удалённые прокси перепроверяются только в том случае, когда список source пуст.
  221.           extended_logs = запись в лог дополнительной (debug) информации о ходе проверки прокси, 1 = включено, 0 = выключено.
  222.           delete_alive = параметр включает простое удаление прокси после того, как пройдёт время, описанное параметром good_alive_time. Во включенном состоянии используется для запрета регулярных перепроверок прокси. 1 = включено, прокси удаляются, 0 = выключено, прокси перепроверяются.
  223.           thread_stack_size = размер зарезервированной памяти под стек для каждого потока. 0 = использовать настройки по умолчанию. НЕ РЕКОМЕНДУЕТСЯ изменять.
  224.       -->
  225.  
  226.       <live_update threads="100" update_interval="5s" good_alive_time="30m" delete_alive="0" remove_deleted_after="2h" errors_to_delete="5" min_check_interval="30s" deleted_recheck_interval="0" extended_logs="0" thread_stack_size="0">
  227.  
  228.         <!--
  229.             Настройки модуля, который позволяет забирать из программы рабочие прокси посредством протокола HTTP.
  230.             Обычно используется, когда программа работает в режиме прокси-чекера, просто проверяя прокси.
  231.             По нижеприведённым ссылкам можно забирать списки проверенных и 100% рабочих прокси.
  232.  
  233.             Параметры:
  234.             bind_to = IP-адрес, на котором принимать входящие соединения. 0.0.0.0 = принимать соединения на всех доступных IP-адресах.
  235.             port = порт, на котором принимать входящие соединения. 0 = не принимать. При запуске нескольких копий программы на одном компьютере необходимо указывать разные порты.
  236.  
  237.             Запросы в виде http://127.0.0.1:8888/socks5.txt http://127.0.0.1:8888/socks4.txt и http://127.0.0.1:8888/https.txt позволяют получить соответствующие списки рабочих прокси.
  238.  
  239.             Этот же модуль позволяет POST-запросом передать список прокси в программу прямо во время работы.
  240.             POST-запросы по адресам http://127.0.0.1:8888/socks5.txt http://127.0.0.1:8888/socks4.txt и http://127.0.0.1:8888/https.txt передают в программу, соответственно, socks5, socks4 и https-прокси.
  241.             Дополнительно поддерживается аргумент list, который может принимать значения "good", "source", "deleted", который определяет список, в который попадут прокси (аналогично аргументу list в разделе с источниками прокси <source>))
  242.             Например: http://127.0.0.1:8888/socks5.txt?list=good
  243.         -->
  244.  
  245.         <http_server bind_to="127.0.0.1" port="8888"/>
  246.  
  247.         <!--
  248.             Настройки проверки прокси.
  249.             Прокси проверяется путём подключения к определённому серверу/порту.
  250.             Опционально можно отправить какие-либо данные и проверить получен ли правильный ответ.
  251.             Прокси считается рабочим, если через него удалось подключиться к серверу и от сервера получен правильный ответ.
  252.  
  253.             Параметры:
  254.             server = адрес сервера, куда необходимо подключиться через прокси
  255.             port = порт сервера, куда необходимо подключиться через прокси
  256.             send = данные, которые необходимо отправить после подключения (\r\n = перевод строки), если данные отправлять не надо, то необходимо указать send=""
  257.             recv = регулярное выражение для проверки ответа от сервера, если оно не будет найдено в тексте ответа, то прокси будет считаться нерабочим
  258.             max_check_time = максимальное время проверки прокси. Если время проверки прокси превышает указанное, то прокси будет считаться нерабочим, даже если пройдёт все тесты. Данная настройка не ограничивает по времени саму проверку прокси, т.е., если указать, к примеру, 1 секунду, то прокси не станут проверяться быстрее, только большее число прокси будет удаляться после проверки. max_check_time="0" - не использовать проверку времени.
  259.         -->
  260.  
  261.         <check server="google.com" port="80" send="GET / HTTP/1.1\r\nHost: www.google.com\r\nConnection: close\r\n\r\n" recv="/Server\:\sgws/i" max_check_time="90s"/>
  262.  
  263.         <!--
  264.             Автосохранение и автозагрузка рабочих прокси.
  265.             Позволяет повторно использовать рабочие прокси при перезагрузке программы без их предварительной проверки.
  266.             Загрузка старых прокси-листов с малым количеством рабочих прокси может заметно снизить скорость работы.
  267.             Рекомендуется очищать файл с прокси (или выключить его запись), если программа используется редко.
  268.  
  269.             Параметры:
  270.             keep="1" - включить сохранение и загрузку, keep="0" - выключить
  271.             filename = имя файла с рабочими прокси. Файл создаётся автоматически.
  272.         -->
  273.  
  274.         <good_proxies keep="0" filename="pgood.txt"/>
  275.  
  276.         <!--
  277.             Список источников для скачивания списков с прокси. Источников может быть любое количество.
  278.             Программа периодически скачивает все прокси из указанных источников, проверяет их и рабочие
  279.             использует в модулях проверки параметров ссылок. Дубликаты прокси удаляются автоматически.
  280.  
  281.             "Скачиваться" списки прокси могут как из интернета, так и из файлов на жёстком диске.
  282.         -->
  283.  
  284.         <sources>
  285.  
  286.           <!--
  287.               Пример с описанием одного источника со списком прокси для скачивания.
  288.               Каждый источник описывается своим собственным тегом source, использовать несколько ссылок в описании 1 источника нельзя.
  289.               К примеру, если необходимо скачивать прокси с 10 страничек, то необходимо указать 10 тегов source со всеми параметрами.
  290.  
  291.               Параметры:
  292.               update_interval = интервал обновления (скачивания) прокси, в миллисекундах. К примеру, 10m = скачивать каждые 10 минут.
  293.               type = тип прокси в списке, поддерживаемые значения "socks4", "socks5", "https", все прокси в списке должны быть одного (указанного) типа. Так же можно указать type="auto", в этом случае программа сама будет проверять тип прокси, но будет делать это в 2-3 раза медленнее. Проверка на тип прокси (при указании type="auto") происходит в такой последовательности: "socks5", "socks4", "https".
  294.               url = имя файла на диске или адрес в интернете, откуда забирать прокси. В случае имени файла, оно должно начинаться с "file:///", например file:///c:\proxies.txt, полный путь можно не указывать, если файл находится рядом с программой.
  295.               regexp = регулярное выражение, используемое для поиска прокси в тексте источника. По умолчанию настроено на общепринятый формат, когда каждая строка файла содержит прокси в виде "127.0.0.1:1080"
  296.               regexp/addr_bracket = номер скобки с адресом прокси в регулярном выражении
  297.               regexp/port_bracket = номер скобки с портом прокси в регулярном выражении
  298.               list = список, в который нужно поместить скачанные прокси. Поддерживаемые значения: "good", "source", "deleted" ("рабочие прокси", "прокси, которые нужно проверить" и "удалённые" соответственно).
  299.           -->
  300.  
  301.           <source update_interval="10m" type="https" list="source">
  302.             <url>http://127.0.0.1/proxies.txt</url>
  303.             <regexp addr_bracket="1" port_bracket="2">/([0-9a-z\-\.]{5,})\:(\d{2,5})/i</regexp>
  304.           </source>
  305.  
  306.           <!--
  307.               Описание второго источника для скачивания прокси.
  308.               В данном случае выполняется периодическая (раз в 10 минут) загрузка прокси из файла proxies.txt, который находится в директории рядом с программой.
  309.               Приставка "file:///" в адресе указывает, что файл находится на диске.
  310.           -->
  311.  
  312.           <source update_interval="10m" type="socks5" list="source">
  313.             <url>file:///proxies.txt</url>
  314.             <regexp addr_bracket="1" port_bracket="2">/([0-9a-z\-\.]{5,})\:(\d{2,5})/i</regexp>
  315.           </source>
  316.  
  317.           <!--
  318.               Пример описания источника, когда работают две копии программы.
  319.               Первая только проверяет прокси и больше ничего не делает, вторая проверяет параметры ссылок используя рабочие прокси.
  320.               В данном случае прокси-листы помещаются в список good, т.к. уже проверены другой программой и 100% рабочие.
  321.           -->
  322.  
  323.           <source update_interval="10m" type="https" list="good">
  324.             <url>http://127.0.0.1:8888/https.txt</url>
  325.             <regexp addr_bracket="1" port_bracket="2">/([0-9a-z\-\.]{5,})\:(\d{2,5})/i</regexp>
  326.           </source>
  327.  
  328.         </sources>
  329.       </live_update>
  330.     </proxies>
  331.  
  332.     <!--
  333.         Настройки проверок ссылок.
  334.  
  335.         Общие параметры проверок для всех проверочных модулей.
  336.  
  337.         enabled="1" = включить данный модуль и выполнять проверку, enabled="0" выключить модуль и не проверять через него. Если модуль выключен, соответствующие столбцы с данными не попадают в файл результатов.
  338.         check_interval = минимальное время в миллисекундах между проверками через один и тот же прокси. 0 = не делать пауз. Используются с целью исключить забанивание айпи-адресов прокси в некоторых модулях.
  339.         retries = количество попыток проверить параметр, каждая попытка идёт через разные прокси. При малом количестве рабочих прокси рекомендуется увеличить параметр. Если после заданного кол-ва попыток параметр проверить не удалось, то в столбце Error для данного модуля появляется "1".
  340.         use_proxies="1" = использовать прокси в этом модуле для проверки, use_proxies="0" = не использовать. В случае использования прокси необходимо включить сам модуль, который проверяет прокси.
  341.        
  342.         Параметры сортировки модулей в файле результатов, в статистике и очерёдность проверки параметров:
  343.         sort_by_position="1" = параметры проверяются модулями в том порядке, в котором они указаны в файле конфигурации, в этом же порядке они выводятся в статистике и в файле с результатами работы.
  344.         sort_by_position="0" = параметры проверяются модулями в том порядке, в котором они проверялись версиями CheckParams до 1.195 включительно.
  345.     -->
  346.  
  347.     <params sort_by_position="1">
  348.  
  349.       <!--
  350.           Настройки модуля проверки Google PR
  351.  
  352.           Поля в файле результатов:
  353.           Google PR error: значение 1 = ошибка после нескольких попыток проверки (параметр retries), значение 0 = нет ошибки
  354.           Google PR: Google PR, если он отсутствует, то знак "-"
  355.  
  356.           Параметры:
  357.           datacenters/datacenter = список датацентров (можно использовать IP-адреса), при проверках подставляется случайный датацентр из списка.
  358.           request/headers = HTTP-запрос со всеми заголовками, передаваемый серверу. В конце обязательна одна пустая строка.
  359.                             %URL% заменяется на урл, который проверяется
  360.                             %HOST% заменяется на домен, к которому обращаются (в данном случае случайный датацентр google)
  361.                             %CHECKSUM% заменяется на контрольную сумму, которая необходима для выполнения запроса
  362.       -->
  363.  
  364.       <google_pr enabled="1" check_interval="0" retries="10" use_proxies="0">
  365.         <request>
  366.           <headers><![CDATA[GET /tbr?features=Rank&sourceid=navclient-ff&client=navclient-auto-ff&ch=%CHECKSUM%&q=info:%URL% HTTP/1.1
  367. Connection: close
  368. Host: %HOST%
  369.  
  370. ]]></headers>
  371.         </request>
  372.         <datacenters>
  373.           <datacenter>toolbarqueries.google.com</datacenter>
  374.         </datacenters>
  375.       </google_pr>
  376.  
  377.       <!--
  378.           Настройки модуля проверки склейки в Google
  379.  
  380.           Поля в файле результатов:
  381.           Google Mirror error: значение 1 = ошибка после нескольких попыток проверки (параметр retries), значение 0 = нет ошибки
  382.           Google Mirror: значение 1 = есть зеркало, значение 0 = нет зеркала. Сайты www.site.ru и site.ru зеркалами не считаются, но зеркальная ссылка попадает в поле Google Mirror Url в любом случае.
  383.           Google Mirror Url: зеркальный адрес
  384.       -->
  385.  
  386.       <google_mirror module_name="Google Mirror" enabled="0" check_interval="0" retries="10" use_proxies="0" results_mode="2" download_size="999999">
  387.         <script_engine enabled="1" name="_internal" language="JScript"><![CDATA[
  388. function OnAfterRequestGoogleMirror(req)
  389. {
  390.   if (/google\.com\/sorry/.test(req.AnswerData))
  391.     return 3;
  392.   if (/!^HTTP\/1\.\d\s+2\d\d/.test(req.AnswerHeaders))
  393.     return 4;
  394.   if (/Sorry,\sno\sinformation\sis\savailable\sfor\sthe/.test(req.AnswerData))
  395.   {
  396.     req.Results = "0;0;;";
  397.     return 1;
  398.   }
  399.   if (!/<h3\sclass="?r"?><a\shref="(.*?)"\sclass/.exec(req.AnswerData))
  400.     return 4;
  401.   var sMirror = RegExp.$1;
  402.   sMirror = sMirror.toLowerCase();
  403.   var sDomain = req.UrlServer.toLowerCase();
  404.   var bMirror = 0;
  405.   if (sMirror.indexOf(sDomain) == -1)
  406.     bMirror = 1;
  407.  
  408.   req.Results = "0;" + bMirror + ";" + sMirror + ";";
  409.   return 1;
  410. }
  411.  
  412. ]]></script_engine>
  413.         <request onAfterRequest="_internal:OnAfterRequestGoogleMirror">
  414.           <server address="www.google.com" port="80"/>
  415.           <headers><![CDATA[GET /search?ie=utf-8&oe=utf-8&hl=en&q=info%3A#$r$UrlProtocol$r$#%3A%2F%2F#$e$UrlServer$e$##$e$UrlPortDefault$e$# HTTP/1.1
  416. Host: #$r$ServerAddress$r$#
  417. User-Agent: #$m$UA$m$#
  418. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  419. Accept-Encoding: gzip, deflate
  420. Connection: close
  421.  
  422. ]]></headers>
  423.         </request>
  424.         <results>
  425.           <fields delimiter_replace="\;">
  426.             <field title="Google Mirror" format="plain"></field>
  427.             <field title="Google Mirror Url" format="plain"></field>
  428.           </fields>
  429.         </results>
  430.       </google_mirror>
  431.  
  432.       <!--
  433.           Настройки модуля проверки индексации в Google.
  434.  
  435.           Поля в файле результатов:
  436.           Google Index Error: значение 1 = ошибка после нескольких попыток проверки (параметр retries), значение 0 = нет ошибки
  437.           Google Index: значение 1 = ссылка присутствует в индексе, значение 0 = ссылка отсутствует в индексе.
  438.       -->
  439.  
  440.       <google_index module_name="Google Index" enabled="0" check_interval="0" retries="10" use_proxies="0" results_mode="2" download_size="999999">
  441.         <request>
  442.           <server address="www.google.com" port="80"/>
  443.           <headers><![CDATA[GET /search?hl=en&q=info%3A#$r$UrlProtocol$r$#%3A%2F%2F#$e$UrlServer$e$##$e$UrlPortDefault$e$##$e$UrlObject$e$# HTTP/1.1
  444. Host: #$r$ServerAddress$r$#
  445. User-Agent: #$m$UA$m$#
  446. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  447. Accept-Encoding: gzip, deflate
  448. Connection: close
  449.  
  450. ]]></headers>
  451.           <checks>
  452.             <check result="banned" present="1" type="string">google.com/sorry/</check>
  453.             <check result="banned" present="1" type="string">HTTP/1.1 403</check>
  454.             <check result="parse" present="0" icase="1" type="regexp"><![CDATA[\n\r?^HTTP/1.\d\s+2\d\d]]></check>
  455.             <check result="good" present="1" type="string"><![CDATA[About Google</a>]]></check>
  456.             <check result="parse" type="*"/>
  457.           </checks>
  458.         </request>
  459.         <results>
  460.           <regexps>
  461.             <regexp name="%index_yes%" icase="1" format="1" default=""><![CDATA[Google can show you the following information for this URL]]></regexp>
  462.             <regexp name="%index_no%" icase="1" format="0" default=""><![CDATA[Sorry, no information is available for the URL]]></regexp>
  463.           </regexps>
  464.           <fields delimiter_replace="\;">
  465.             <field title="Google Index" format="plain">%index_yes%%index_no%</field>
  466.           </fields>
  467.         </results>
  468.       </google_index>
  469.  
  470.       <!--
  471.           Настройки модуля проверки количества проиндексированных страниц в Google
  472.  
  473.           Поля в файле результатов:
  474.           Google Indexed Pages Error: значение 1 = ошибка после нескольких попыток проверки (параметр retries), значение 0 = нет ошибки
  475.           Google Indexed Pages: количество проиндексированных страниц
  476.       -->
  477.  
  478.       <google_indexed_pages module_name="Google Indexed Pages" enabled="0" check_interval="0" retries="10" use_proxies="0" results_mode="2" download_size="999999">
  479.         <request>
  480.           <server address="www.google.com" port="80"/>
  481.           <headers><![CDATA[GET /search?hl=en&q=site%3A#$e$UrlServer$e$# HTTP/1.1
  482. Host: #$r$ServerAddress$r$#
  483. User-Agent: #$m$UA$m$#
  484. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  485. Accept-Encoding: gzip, deflate
  486. Connection: close
  487.  
  488. ]]></headers>
  489.           <checks>
  490.             <check result="banned" present="1" type="string">google.com/sorry/</check>
  491.             <check result="banned" present="1" type="string">HTTP/1.1 403</check>
  492.             <check result="parse" present="0" icase="1" type="regexp"><![CDATA[\n\r?^HTTP/1.\d\s+2\d\d]]></check>
  493.             <check result="good" present="1" type="string"><![CDATA[About Google</a>]]></check>
  494.             <check result="parse" type="*"/>
  495.           </checks>
  496.         </request>
  497.         <results>
  498.           <regexps>
  499.             <regexp name="%indexed%" icase="1" format="$2$3$4$5" default="0"><![CDATA[resultStats>(About)?\s?(\d+),?(\d+)?,?(\d+)?,?(\d+)?\sresults<nobr>]]></regexp>
  500.           </regexps>
  501.           <fields delimiter_replace="\;">
  502.             <field title="Google Indexed Pages" format="plain">%indexed%</field>
  503.           </fields>
  504.         </results>
  505.       </google_indexed_pages>
  506.  
  507.       <!--
  508.           Настройки модуля проверки количества результатов в поиске Google. В данном случае вместо ссылок в файле со списком ссылок содержатся обычные запросы.
  509.  
  510.           Поля в файле результатов:
  511.           Google Results Count Error: значение 1 = ошибка после нескольких попыток проверки (параметр retries), значение 0 = нет ошибки
  512.           Google Results Count: количество результатов в поиске по запросу.
  513.       -->
  514.  
  515.       <google_results_count module_name="Google Results Count" enabled="0" check_interval="0" retries="10" use_proxies="0" results_mode="2" download_size="999999" parse_url="0">
  516.         <request>
  517.           <server address="www.google.com" port="80"/>
  518.           <headers><![CDATA[GET /search?ie=utf-8&oe=utf-8&hl=en&q=#$e$Url$e$# HTTP/1.1
  519. Host: #$r$ServerAddress$r$#
  520. User-Agent: #$m$UA$m$#
  521. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  522. Accept-Encoding: gzip, deflate
  523. Connection: close
  524.  
  525. ]]></headers>
  526.           <checks>
  527.             <check result="banned" present="1" type="string">google.com/sorry/</check>
  528.             <check result="banned" present="1" type="string">HTTP/1.1 403</check>
  529.             <check result="parse" present="0" icase="1" type="regexp"><![CDATA[\n\r?^HTTP/1.\d\s+2\d\d]]></check>
  530.             <check result="good" present="1" type="string"><![CDATA[About Google</a>]]></check>
  531.             <check result="parse" type="*"/>
  532.           </checks>
  533.         </request>
  534.         <results>
  535.           <regexps>
  536.             <regexp name="%results%" icase="1" format="$2$3$4$5" default="0"><![CDATA[resultStats>(About)?\s?(\d+),?(\d+)?,?(\d+)?,?(\d+)?\sresults<nobr>]]></regexp>
  537.           </regexps>
  538.           <fields delimiter_replace="\;">
  539.             <field title="Google Results Count" format="plain">%results%</field>
  540.           </fields>
  541.         </results>
  542.       </google_results_count>
  543.  
  544.       <!--
  545.           Настройки модуля проверки Yandex тИЦ
  546.  
  547.           Поля в файле результатов:
  548.           Yandex TIC Error: значение 1 = ошибка после нескольких попыток проверки (параметр retries), значение 0 = нет ошибки
  549.           Yandex TIC: тИЦ ссылки/домена.
  550.           Yandex Mirror: зачение 1 = домен является зеркалом другого домена, зачение 0 = не является
  551.           Yandex Mirror Domain: зеркальный домен
  552.           Yandex Catalog: значение 1 = проверяемая ссылка содержится в яндекс-каталоге, зачение 0 = ссылка отсутствует в яндекс-каталоге
  553.  
  554.           Параметры:
  555.           request/headers = HTTP-запрос со всеми заголовками, передаваемый серверу. В конце обязательна одна пустая строка.
  556.                             %URL% заменяется на адрес, который проверяется
  557.                             %HOST% заменяется на домен, к которому обращаются (в данном случае bar-navig.yandex.ru)
  558.       -->
  559.  
  560.       <yandex_tic enabled="1" check_interval="0" retries="10" use_proxies="0">
  561.         <request>
  562.           <headers><![CDATA[GET /u?ver=2&show=32&url=%URL% HTTP/1.1
  563. Host: %HOST%
  564.  
  565. ]]></headers>
  566.         </request>
  567.       </yandex_tic>
  568.  
  569.       <!--
  570.           Настройки модуля проверки индексации в Yandex
  571.  
  572.           Поля в файле результатов:
  573.           Yandex Index Error: значение 1 = ошибка после нескольких попыток проверки (параметр retries), значение 0 = нет ошибки
  574.           Yandex Index: значение 1 = ссылка присутствует в индексе, зачение 0 = ссылка отсутствует в индексе
  575.  
  576.           Параметры:
  577.           request/headers = HTTP-запрос со всеми заголовками, передаваемый серверу. В конце обязательна одна пустая строка.
  578.                             %URL% заменяется на адрес, который проверяется
  579.                             %HOST% заменяется на домен, к которому обращаются (в данном случае yandex.ru)
  580.       -->
  581.  
  582.       <yandex_index enabled="0" check_interval="0" retries="10" use_proxies="0">
  583.         <request>
  584.           <headers><![CDATA[GET /yandsearch?text=url%3A%URL%&lr=0 HTTP/1.1
  585. Connection: close
  586. Host: %HOST%
  587.  
  588. ]]></headers>
  589.         </request>
  590.       </yandex_index>
  591.  
  592.       <!--
  593.           Настройки модуля проверки количества проиндексированных страниц в Yandex.
  594.           По умолчанию кол-во проиндексированных страниц проверяется запросом вида: http://yandex.ru/yandsearch?serverurl=ССЫЛКА&lr=0
  595.  
  596.           Поля в файле результатов:
  597.           Yandex Indexed Pages Error: значение 1 = ошибка после нескольких попыток проверки (параметр retries), значение 0 = нет ошибки
  598.           Yandex Indexed Pages: количество проиндексированных страниц
  599.  
  600.           Параметры:
  601.           request/headers = HTTP-запрос со всеми заголовками, передаваемый серверу. В конце обязательна одна пустая строка.
  602.                             %URL% заменяется на адрес, который проверяется
  603.                             %HOST% заменяется на домен, к которому обращаются (в данном случае yandex.ru)
  604.       -->
  605.  
  606.       <yandex_indexed_pages enabled="0" check_interval="0" retries="10" use_proxies="0">
  607.         <request>
  608.           <headers><![CDATA[GET /yandsearch?serverurl=%URL%&lr=0 HTTP/1.1
  609. Connection: close
  610. Host: %HOST%
  611.  
  612. ]]></headers>
  613.         </request>
  614.       </yandex_indexed_pages>
  615.  
  616.       <!--
  617.           Настройки модуля DNS. Из ссылки в этом режиме выделяется домен и по нему делаются DNS-запросы. Работа через прокси в этом модуле не поддерживается.
  618.  
  619.           Поля в файле результатов:
  620.           A-error,NS-error,MX-error,CNAME-error: код ошибки, 0 = нет ошибок, 1460 = таймаут, 9003 = несуществующий домен, 9501 = отсутствуют записи нужного типа
  621.           A-records: список А-записей домена через запятую
  622.           NS-records: список NS-серверов через запятую
  623.           MX-records: список MX-серверов в формате "server:mx preference" через запятую
  624.           CNAME-records: список CNAME-записей домена через запятую
  625.  
  626.           Выключенные проверки записей не пишут результаты в файл.
  627.  
  628.           Дополнительные параметры:
  629.           detach_www = если включено, то удаляет "www." из имени домена при проверке (при условии, что "www." в домене присутствует). "1" = включено, "0" = выключено
  630.           queries/*/enabled = управление работой отдельных проверок, 1 = включено, 0 = отключено
  631.       -->
  632.  
  633.       <dns enabled="0" retries="3" detach_www="1">
  634.         <queries>
  635.           <ns enabled="1"/>
  636.           <a enabled="1"/>
  637.           <mx enabled="1"/>
  638.           <cname enabled="1"/>
  639.         </queries>
  640.       </dns>
  641.  
  642.       <!--
  643.           Настройки модуля Whois.
  644.           Модуль представляет данные в "сыром" виде, которые без дополнительной обработки в другой программе/скрипте невозможно использовать.
  645.           Выборка определённых полей из данных Whois без дополнительных скриптов (которые не поставляются с программой) в данный момент невозможна.
  646.  
  647.           Поля в файле результатов:
  648.           Whois Error: значение 1 = ошибка после нескольких попыток проверки (параметр retries), значение 0 = нет ошибки
  649.           Whois Data: данные из whois в формате base64
  650.  
  651.           Параметры:
  652.           recursion = использовать повторные (рекурсивные) запросы при необходимости, 1 = включено, 0 = выключено
  653.           both_results = записывать в файл с результатами оба запроса (первичный и повторный), 1 = включено, 0 = выключено
  654.           detach_www = если включено, то удаляет "www." из имени домена при проверке (при условии, что "www." в домене присутствует). "1" = включено, "0" = выключено
  655.       -->
  656.  
  657.       <whois enabled="0" check_interval="0" retries="10" use_proxies="0" recursion="1" both_results="1" detach_www="1"/>
  658.  
  659.       <!--
  660.           Настройки модуля проверки в Yahoo
  661.  
  662.           Поля в файле результатов:
  663.           Yahoo Error: значение 1 = ошибка после нескольких попыток проверки (параметр retries), значение 0 = нет ошибки
  664.           Yahoo backlinks: кол-во бэклинков на ссылку
  665.           Yahoo pages: кол-во проиндексированных страниц (для доменов)
  666.  
  667.           Параметры:
  668.           request/headers = HTTP-запрос со всеми заголовками, передаваемый серверу. В конце обязательна одна пустая строка.
  669.                             %URL% заменяется на домен, который проверяется
  670.                             %HOST% заменяется на домен, к которому обращаются (в данном случае случайный датацентр yahoo)
  671.       -->
  672.  
  673.       <yahoo module_name="Yahoo" enabled="0" check_interval="0" retries="10" use_proxies="0" results_mode="2" download_size="999999">
  674.         <request>
  675.           <server address="siteexplorer.search.yahoo.com" port="80"/>
  676.           <headers><![CDATA[GET /search?p=#$r$UrlServer$r$#&bwmf=d HTTP/1.1
  677. Host: #$r$ServerAddress$r$#
  678. User-Agent: #$m$UA$m$#
  679. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  680. Accept-Encoding: gzip, deflate
  681. Connection: close
  682.  
  683. ]]></headers>
  684.           <checks>
  685.             <check result="banned" present="1" type="string">HTTP/1.1 403</check>
  686.             <check result="banned" present="1" type="string">HTTP/1.1 999</check>
  687.             <check result="parse" present="0" icase="1" type="regexp"><![CDATA[\n\r?^HTTP/1.\d\s+2\d\d]]></check>
  688.             <check result="good" present="1" type="string"><![CDATA[Yahoo! Inc. All rights reserved.]]></check>
  689.             <check result="parse" type="*"/>
  690.           </checks>
  691.         </request>
  692.         <results>
  693.           <regexps>
  694.             <regexp name="%backs%" icase="1" format="$1$2$3$4" default="0"><![CDATA[>Inlinks\s\((\d+),?(\d+)?,?(\d+)?,?(\d+)?\)<]]></regexp>
  695.             <regexp name="%pages%" icase="1" format="$1$2$3$4" default="0"><![CDATA[>Pages\s\((\d+),?(\d+)?,?(\d+)?,?(\d+)?\)<]]></regexp>
  696.           </regexps>
  697.           <fields delimiter_replace="\;">
  698.             <field title="Yahoo backlinks" format="plain">%backs%</field>
  699.             <field title="Yahoo pages" format="plain">%pages%</field>
  700.           </fields>
  701.         </results>
  702.       </yahoo>
  703.  
  704.       <!--
  705.           Настройки модуля проверки наличия сайта в Web Archive.
  706.  
  707.           Поля в файле результатов:
  708.           Web Archive Error: значение 1 = ошибка после нескольких попыток проверки (параметр retries), значение 0 = нет ошибки.
  709.           Web Archive Present: значение 1 = сайт присутствует в Web Archive, значение 0 = сайт отсутствует в Web Archive.
  710.       -->
  711.  
  712.       <web_archive module_name="Web Archive" enabled="0" check_interval="0" retries="10" use_proxies="0" results_mode="2" download_size="999999">
  713.         <request>
  714.           <server address="wayback.archive.org" port="80"/>
  715.           <headers><![CDATA[GET /web/*/#$r$UrlProtocol$r$#://#$r$UrlServer$r$#/ HTTP/1.1
  716. Host: wayback.archive.org
  717. User-Agent: #$m$UA$m$#
  718. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  719. Accept-Encoding: gzip, deflate
  720. Connection: close
  721.  
  722. ]]></headers>
  723.           <checks>
  724.             <check result="parse" present="0" icase="1" type="regexp"><![CDATA[\n\r?^HTTP/1|4.\d\s+2\d\d]]></check>
  725.             <check result="good" present="1" icase="1" type="regexp"><![CDATA[The Wayback Machine is an initiative]]></check>
  726.             <check result="parse" type="*"/>
  727.           </checks>
  728.         </request>
  729.         <results>
  730.           <regexps>
  731.             <regexp name="%is_found%" icase="1" format="1" default="0"><![CDATA[This calendar view maps the number of times]]></regexp>
  732.           </regexps>
  733.           <fields delimiter_replace="\;">
  734.             <field title="Web Archive Present" format="plain">%is_found%</field>
  735.           </fields>
  736.         </results>
  737.       </web_archive>
  738.  
  739.       <!--
  740.           Настройки HTTP-модуля.
  741.           Данный модуль позволяет как просто скачивать всё содержимое по указанным ссылкам, так и выполнять проверки в других сервисах,
  742.           которые не описаны в программе. Т.е. на основе этого модуля можно создавать другие модули. Примеры таких модулей предоставлены
  743.           ниже, сразу после описания настроек самого модуля.
  744.  
  745.           Поля по умолчанию в файле результатов, если в конфигурации не заданы другие:
  746.           HTTP Error: значение 1 = ошибка после нескольких попыток скачивания и проверки (параметр retries), значение 0 = нет ошибки
  747.           HTTP Contents: запрос к серверу и ответ от него в кодировке base64
  748.  
  749.           Параметры:
  750.           download_size = максимальный размер данных в байтах, которые необходимо скачать после заголовков, 0 = данные не скачивать
  751.           results_mode = режим записи результатов в файл, 0 = не записывать вообще, 1 = записывать только заголовки, 2 = записывать целиком весь ответ
  752.           parse_url = настройка позволяет выключать проверку правильности формата ссылок в файла со ссылками, 1 = проверять формат ссылок и разбирать ссылку на составные части (UrlServer, UrlPort, UrlProtocol), 0 = не проверять и не разбирать.
  753.           request/headers = HTTP-запрос со всеми заголовками, передаваемый серверу. В конце обязательна одна пустая строка.
  754.                             %OBJECT% заменяется на запрашиваемый урл без домена, к примеру "/index.php"
  755.                             %HOST% заменяется на домен, к которому обращаются
  756.           server/@address = адрес, куда следует подключаться. Можно использовать макрос %HOST%, в который подставляется домен из проверяемой ссылки.
  757.           server/@port = порт для подключения. Можно использовать макрос %PORT%, в который подставляется порт из проверяемой ссылки или 80, если порт отсутствует.
  758.           onBeforeUrlParse = имя функции из файла со скриптами, которую нужно вызвать перед тем, как ссылка будет разобрана на составные части (сервер, порт, "путь" до файла). Может использоваться для предварительной подготовки или модифицкации ссылки перед запросом, а так же для "ручного" разбора на составные части в обход стандартной процедуры. Отсутствующий или пустой параметр = не вызывать функцию.
  759.           onBeforeRequest = имя функции из файла со скриптами, которую нужно вызвать перед тем, как уже подготовленный запрос будет отправлен на сервер. В функции можно модифицировать как сам запрос, так и другие параметры (такие, как адрес и порт сервера) перед подключением. Отсутствующий или пустой параметр = не вызывать функцию.
  760.           onAfterHeadersReceived = имя функции из файла со скриптами, которую нужно вызвать после того, как от сервера будут получены заголовки HTTP. В функции можно включить запись файлов на диск по результатам разбора заголовков или остановить дальнейшее скачивание страницы. Отсутствующий или пустой параметр = не вызывать функцию.
  761.           onAfterRequest = имя функции из файла со скриптами, которую нужно вызвать после того, как все данные от сервера будут получены. В этой функции можно самостоятельно разобрать ответ от сервера, не пользуясь встроенными опциями. Если эта функция вызывается, то внутренний разбор параметров регулярными выражениями и проверка правильности скачивания страницы автоматически отключается. В файл результатов записывается только то, что вернёт функция. Отсутствующий или пустой параметр = не вызывать функцию.
  762.       -->
  763.  
  764.       <http module_name="HTTP" enabled="0" check_interval="0" retries="10" use_proxies="0" results_mode="2" download_size="999999" parse_url="1">
  765.         <request onBeforeUrlParse="HTTP_OnBeforeUrlParse" onBeforeRequest="HTTP_OnBeforeRequest" onAfterHeadersReceived="HTTP_OnAfterHeadersReceived" onAfterRequest="HTTP_OnAfterRequest">
  766.           <server address="%HOST%" port="%PORT%"/>
  767.           <headers><![CDATA[GET %OBJECT% HTTP/1.1
  768. Host: %HOST%
  769. User-Agent: #$m$UA$m$#
  770. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  771. Accept-Encoding: gzip, deflate
  772. Connection: close
  773.  
  774. ]]></headers>
  775.  
  776.         <!--
  777.           Настройки проверок для скачанной страницы.
  778.           Проверки используется для определения "бана", недокачанной страницы или успешного скачивания страницы.
  779.           Например, если в ответе встречается фраза "you are banned", то модуль считает, что IP от прокси забанен и пробует повторить запрос через другой адрес.
  780.           А если в ответе отсутствует закрывающий тег /HTML, то страница по каким-то причинам не докачана до конца и стоит попробовать скачать её еще раз.
  781.           Отсутствие настроек заставляет модуль считать, что страница успешно скачана. Количество проверок может быть любым.
  782.           Проверки выполняются в том порядке, в котором они описаны и до тех пор, пока какая-либо из проверок не окажется успешной.
  783.  
  784.           Параметры проверок:
  785.           type = тип проверки:
  786.               "regexp" = использовать регулярное выражение для поиска текста на странице
  787.               "string" = использовать простой поиск строки, указанной в тексте проверки
  788.               "*" - специальный тип, при котором проверка всегда успешная, обычно используется в конце списка проверок.
  789.           present = ситуация, при которой "срабатывает" проверка:
  790.               0 = проверочный текст должен отсутствовать в коде HTML-страницы
  791.               1 = проверочный текст должен присутствовать в коде HTML-страницы
  792.           result = какой статус выдавать при успешном прохождении проверки. Возможные варианты статусов:
  793.               "good" = страница успешно скачана.
  794.               "banned" = прокси забанен, необходимо использовать другой прокси для повторного скачивания.
  795.               "proxy" = прокси некорректно ведёт себя, его нельзя использовать и следует скачать страницу через другой прокси. (Например, прокси выдаёт свою HTML-страницу вместо скачиваемой)
  796.               "parse" = общая ошибка парсинга, необходимо повторить скачивание.
  797.           icase = регистронезависимая проверка для регулярных выражений:
  798.               1 = не учитывать регистр
  799.               0 = учитывать регистр.
  800.  
  801.           Примеры:
  802.               При отсутствии в результатах скачивания кода HTTP-ошибки вида 2хх (HTTP/1.1 200 OK) выдать ошибку парсинга и попытаться скачать еще раз, пока не истечёт количество попыток:
  803.                 <check result="parse" present="0" icase="1" type="regexp"><![CDATA[\n\r?^HTTP/1.\d\s+2\d\d]]></check>
  804.               При наличии в результатах скачивания текста "you are banned" попытаться скачать через другой прокси, если количество попыток меньше указанного в настройках:
  805.                 <check result="banned" present="1" type="string">you are banned</check>
  806.               При наличии тега </html> считать страницу успешно скачанной:
  807.                 <check result="good" present="1" icase="1" type="regexp"><![CDATA[<\/html>]]></check>
  808.               Если ни одна из вышеприведённых проверок не сработала, то выдать ошибку парсинга и попытаться скачать еще раз, пока не истечёт количество попыток:
  809.                 <check result="parse" type="*"/>
  810.               Если ни одна из вышеприведённых проверок не сработала, то считать, что страница успешно скачана:
  811.                 <check result="good" type="*"/>
  812.         -->
  813.  
  814.           <checks>
  815.             <check result="parse" present="0" icase="1" type="regexp"><![CDATA[\n\r?^HTTP/1.\d\s+2\d\d]]></check>
  816.             <check result="banned" present="1" type="string">you are banned</check>
  817.             <check result="good" present="1" icase="1" type="regexp"><![CDATA[<\/html>]]></check>
  818.             <check result="parse" type="*"/>
  819.           </checks>
  820.         </request>
  821.        
  822.         <!--
  823.           Настройки выборки полей из скачанной страницы для файла результатов.
  824.           При отсутствии этих настроек в файл результатов попадает всё содержимое страницы, описанное аттрибутом results_mode в формате base64.
  825.  
  826.           Данные выбираются из кода HTML-страницы посредством регулярных выражений, данные помещаются в переменные.
  827.           Далее содержимое этих переменных подставляется в соответствующие поля в CSV-файле.
  828.         -->
  829.  
  830.         <results>
  831.  
  832.           <!--
  833.             Список регулярных выражений, с помощью которых собираются данные в переменные со страницы.
  834.  
  835.             Параметры:
  836.             name = имя переменной, в которую попадает найденное содержимое согласно формату. Далее эти переменные заменяются в нижеописанных полях.
  837.             icase = регистронезависимая проверка для регулярных выражений:
  838.                 1 = не учитывать регистр
  839.                 0 = учитывать регистр.
  840.             format = описывает формат, в котором данные, найденные регулярным выражением, попадают в переменную. $N = номер скобки регулярного выражения, $0 = всё выражение целиком.
  841.                 Данные записываются в произвольной форме. Например, так: format="<a href=&quot;$1&quot;>$2</a>"
  842.             default = данные по умолчанию, если регулярное выражение не будет найдено
  843.           -->
  844.  
  845.           <regexps>
  846.             <regexp name="%httpcode%" icase="1" format="$1" default=""><![CDATA[\n\r?^HTTP/1.\d\s+(\d\d\d)]]></regexp>
  847.             <regexp name="%title%" icase="1" format="$1" default=""><![CDATA[<title>(.*?)</title>]]></regexp>
  848.             <regexp name="%encoding%" icase="1" format="$1" default=""><![CDATA[charset=(.*?)"]]></regexp>
  849.           </regexps>
  850.  
  851.           <!--
  852.             Список полей в файле с результатами. Данные для полей выбираются из переменных для регулярных выражений из предыдущего раздела.
  853.  
  854.             Параметры:
  855.             delimiter_replace = текст, на который заменять символ разделителя ";" в содержимом полей, чтобы не сбивалось количество столбцов при чтении *.csv-файла
  856.             title = название столбца в *.csv-файле
  857.             format = формат сохранения данных
  858.                 "plain" = сохранять как есть
  859.                 "base64" = сохранять в кодировке base64
  860.             fields/field = текст, который записывается в поле с данными, переменные регулярных выражений заменяются на найденный ими текст согласно формату.
  861.           -->
  862.  
  863.           <fields delimiter_replace="\;">
  864.             <field title="HTTP Status code" format="plain">%httpcode%</field>
  865.             <field title="Title" format="base64">%title%</field>
  866.             <field title="Encoding" format="plain">%encoding%</field>
  867.           </fields>
  868.         </results>
  869.       </http>
  870.  
  871.       <!--
  872.         Модули, основанные на модуле HTTP.
  873.  
  874.         Для создания своих собственных модулей можно создавать копии настроек модуля http внутри раздела params (по пути settings=>check_engine=>params)
  875.         указав в параметре module_name другое имя и указав любой другой корневой XML-тег, в котором хранятся настройки модуля.
  876.  
  877.         Таким образом сделаны следующие два модуля, описанные тегами alexa и yatic (первый собирает параметры сайтов из alexa.com, второй собирает
  878.         тематический индекс цитирования и служит лишь примером, поскольку в программе имеется встроенный модуль, выполняющий то же самое)
  879.        
  880.         Для создания нового модуля достаточно скопировать настройки модуля http, указав другой тег, в котором эти настройки хранятся.
  881.         Имя тега должно состоять из символов, не противоречащих правилам XML.
  882.         Тег обязательно должен иметь аттрибут module_name, значение которого отображается в статистике и в файле результатов.
  883.         Все остальные настройки полностью соответствуют модулю HTTP.
  884.       -->
  885.  
  886.       <!--
  887.         Модуль проверки параметров с сайта Alexa.com, основанный на модуле HTTP.
  888.         Модуль служит примером, на основе которого можно создавать свои модули проверок.
  889.         Признаком успешного скачивания служат код HTTP-ошибки 2хх и наличие закрывающего тега /ALEXA.
  890.         Регулярными выражениями выбираются поля в переменные %rank%, %reach%, %links% и %dmoz%, которые потом подставляются в соответствующие поля в CSV-файле с результатами.
  891.       -->
  892.  
  893.       <alexa module_name="Alexa" enabled="0" check_interval="0" retries="10" use_proxies="0" results_mode="2" download_size="999999">
  894.         <request>
  895.           <server address="data.alexa.com" port="80"/>
  896.           <headers><![CDATA[GET /data/%RAND_L_14_14%?cli=10&ver=spkyf-1.4.9&dat=ns&ref=&url=http%3A%2F%2F%HOST% HTTP/1.1
  897. Host: %HOST%
  898. User-Agent: #$m$UA$m$#
  899. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  900. Accept-Encoding: gzip, deflate
  901. Connection: close
  902.  
  903. ]]></headers>
  904.           <checks>
  905.             <check result="parse" present="0" icase="1" type="regexp"><![CDATA[\n\r?^HTTP/1.\d\s+2\d\d]]></check>
  906.             <check result="good" present="1" icase="1" type="regexp"><![CDATA[<\/ALEXA>]]></check>
  907.             <check result="parse" type="*"/>
  908.           </checks>
  909.         </request>
  910.         <results>
  911.           <regexps>
  912.             <regexp name="%rank%" icase="1" format="$1" default="-"><![CDATA[<POPULARITY\sURL=".*?"\sTEXT="(.*?)"\/>]]></regexp>
  913.             <regexp name="%reach%" icase="1" format="$1" default="-"><![CDATA[<REACH\sRANK="(.*?)"\/>]]></regexp>
  914.             <regexp name="%links%" icase="1" format="$1" default="-"><![CDATA[<LINKSIN\sNUM="(.*?)"/>]]></regexp>
  915.             <regexp name="%dmoz%" icase="1" format="yes" default="no"><![CDATA[<DMOZ>]]></regexp>
  916.           </regexps>
  917.           <fields delimiter_replace="\;">
  918.             <field title="Alexa Traffic Rank" format="plain">%rank%</field>
  919.             <field title="Alexa Reach Rank" format="plain">%reach%</field>
  920.             <field title="Alexa links in" format="plain">%links%</field>
  921.             <field title="Alexa DMOZ" format="plain">%dmoz%</field>
  922.           </fields>
  923.         </results>
  924.       </alexa>
  925.  
  926.       <!--
  927.         Модуль проверки параметров Yandex-Bar, основанный на модуле HTTP.
  928.         Модуль служит примером, на основе которого можно создавать свои модули проверок.
  929.       -->
  930.  
  931.       <yatic module_name="Yandex TCY" enabled="0" check_interval="0" retries="10" use_proxies="0" results_mode="2" download_size="999999">
  932.         <request>
  933.           <server address="bar-navig.yandex.ru" port="80"/>
  934.           <headers><![CDATA[GET /u?ver=2&show=32&url=http://%URL% HTTP/1.1
  935. Host: %HOST%
  936. Connection: close
  937.  
  938. ]]></headers>
  939.           <checks>
  940.             <check result="parse" present="0" icase="1" type="regexp"><![CDATA[\n\r?^HTTP/1.\d\s+2\d\d]]></check>
  941.             <check result="good" present="1" icase="1" type="regexp"><![CDATA[<\/urlinfo>]]></check>
  942.             <check result="parse" type="*"/>
  943.           </checks>
  944.         </request>
  945.         <results>
  946.           <regexps>
  947.             <regexp name="%tcy%" icase="1" format="$1" default=""><![CDATA[<tcy\srang=".*?"\svalue="(.*?)"/>]]></regexp>
  948.           </regexps>
  949.           <fields delimiter_replace="\;">
  950.             <field title="Yandex TCY" format="plain">%tcy%</field>
  951.           </fields>
  952.         </results>
  953.       </yatic>
  954.  
  955.       <!--
  956.         Модуль проверки параметров SEOmoz, которые доступны в бесплатном API (SEOmoz Free API).
  957.         Необходимо зарегистрироваться на сайте SEOmoz и получить ключ для бесплатного доступа (Access ID + Secret Key) на этой странице:
  958.         http://www.seomoz.org/api
  959.         Для работы модуля необходимо в файле checkparams_macroses.xml у макроса с именем SEOMOZBASICAUTH внутри тега <value></value> указать то значение, которое выдаст эта страница:
  960.         http://checkparams.com/basic-auth.php
  961.         В макросе можно использовать несколько тегов <value>, указывая у каждого тега свой ключ API, тогда они будут подставляться случайным образом.
  962.       -->
  963.  
  964.       <seomozurl module_name="SEOmos Url Metrics" enabled="0" check_interval="0" retries="10" use_proxies="0" results_mode="2" download_size="999999">
  965.         <request>
  966.           <server address="lsapi.seomoz.com" port="80"/>
  967.           <headers><![CDATA[GET /linkscape/url-metrics/%URL_ESCAPED% HTTP/1.1
  968. Host: lsapi.seomoz.com
  969. Authorization: Basic #$m$SEOMOZBASICAUTH$m$#
  970. Accept-Encoding: gzip, deflate
  971. Connection: close
  972.  
  973. ]]></headers>
  974.           <checks>
  975.             <check result="banned" present="1" icase="1" type="regexp"><![CDATA[HTTP\/1\.1\s401]]></check>
  976.             <check result="good" present="1" icase="1" type="string"><![CDATA[}]]></check>
  977.             <check result="parse" type="*"/>
  978.           </checks>
  979.         </request>
  980.         <results>
  981.           <regexps>
  982.             <regexp name="%fmrp%" icase="1" format="$1" default=""><![CDATA["fmrp":(.*?)[,}]]]></regexp>
  983.             <regexp name="%fmrr%" icase="1" format="$1" default=""><![CDATA["fmrr":(.*?)[,}]]]></regexp>
  984.             <regexp name="%pda%" icase="1" format="$1" default=""><![CDATA["pda":(.*?)[,}]]]></regexp>
  985.             <regexp name="%ueid%" icase="1" format="$1" default=""><![CDATA["ueid":(.*?)[,}]]]></regexp>
  986.             <regexp name="%uid%" icase="1" format="$1" default=""><![CDATA["uid":(.*?)[,}]]]></regexp>
  987.             <regexp name="%umrp%" icase="1" format="$1" default=""><![CDATA["umrp":(.*?)[,}]]]></regexp>
  988.             <regexp name="%umrr%" icase="1" format="$1" default=""><![CDATA["umrr":(.*?)[,}]]]></regexp>
  989.             <regexp name="%upa%" icase="1" format="$1" default=""><![CDATA["upa":(.*?)[,}]]]></regexp>
  990.             <regexp name="%us%" icase="1" format="$1" default=""><![CDATA["us":(.*?)[,}]]]></regexp>
  991.             <regexp name="%ut%" icase="1" format="$1" default=""><![CDATA["ut":"(.*?)"[,}]]]></regexp>
  992.             <regexp name="%uu%" icase="1" format="$1" default=""><![CDATA["uu":"(.*?)"[,}]]]></regexp>
  993.           </regexps>
  994.           <fields delimiter_replace="\;">
  995.             <field title="SEOmoz Subdomain mozRank Pretty" format="plain">%fmrp%</field>
  996.             <field title="SEOmoz Subdomain mozRank Raw" format="plain">%fmrr%</field>
  997.             <field title="SEOmoz Domain Authority" format="plain">%pda%</field>
  998.             <field title="SEOmoz External Links" format="plain">%ueid%</field>
  999.             <field title="SEOmoz Links" format="plain">%uid%</field>
  1000.             <field title="SEOmoz mozRank Pretty" format="plain">%umrp%</field>
  1001.             <field title="SEOmoz mozRank Raw" format="plain">%umrr%</field>
  1002.             <field title="SEOmoz Page Authority" format="plain">%upa%</field>
  1003.             <field title="SEOmoz HTTP Status Code" format="plain">%us%</field>
  1004.             <field title="SEOmoz Title" format="plain">%ut%</field>
  1005.             <field title="SEOmoz URL" format="plain">%uu%</field>
  1006.           </fields>
  1007.         </results>
  1008.       </seomozurl>
  1009.  
  1010.     </params>
  1011.   </check_engine>
  1012.  
  1013.   <!--
  1014.       Настройки модуля Request Thread Pool (RTP).
  1015.       Модуль доступен исключительно из скриптов и не может быть использован напрямую пользователем.
  1016.  
  1017.       Параметры:
  1018.       enabled="1" - включить модуль, enabled="0" - выключить модуль
  1019.       threads = количество потоков, обслуживающих очередь заданий модуля RTP
  1020.   -->
  1021.  
  1022.   <request_thread_pool enabled="0" threads="100">
  1023.  
  1024.     <!--
  1025.         Описание групп прокси для модуля RTP.
  1026.  
  1027.         В каждом запросе RTP, в котором используется прокси, необходимо указать имя группы прокси, через которую будет происходить подключение.
  1028.         Группы прокси используются для того, чтобы исключить взаимное влияние разных сервисов на блокировку/бан одних и тех же прокси.
  1029.  
  1030.         Количество групп ничем не ограничено.
  1031.     -->
  1032.  
  1033.     <proxy_groups>
  1034.  
  1035.       <!--
  1036.           Описание одной группы прокси.
  1037.          
  1038.           Парметры:
  1039.           errors_to_block = кол-во ошибок подключения в модуле RTP через прокси, после которого прокси будет временно заблокирован, 0 = не блокировать
  1040.           errors_to_delete = кол-во ошибок, после которых прокси удаляется из списка прокси в модуле RTP
  1041.           unblock_every = вероятность разблокирования прокси (для повторной проверки) при следующей попытке подключиться, 0 = не разблокировать вообще, 2 = разблокировать каждую вторую попытку подключения, 3 = каждую третью и так далее
  1042.           remove_deleted_after = время, в течение которого нерабочие прокси остаются в списке deleted (чтобы предотвратить их повторное добавление), в миллисекундах
  1043.           plu_sync = параметр определяет включена ли синхронизация прокси с модулем проверки прокси. enabled="1" - синхонизация включена, новые прокси будут добавляться в группу, enabled="0" - синхронизация выключена, прокси необходимо добавлять вручную через функцию RTP.AddProxy
  1044.       -->
  1045.  
  1046.       <proxy_group errors_to_block="5" errors_to_delete="20" unblock_every="500" remove_deleted_after="2h" plu_sync="1">Unchecked</proxy_group>
  1047.       <proxy_group errors_to_block="5" errors_to_delete="20" unblock_every="500" remove_deleted_after="2h" plu_sync="0">Yandex</proxy_group>
  1048.       <proxy_group errors_to_block="5" errors_to_delete="20" unblock_every="500" remove_deleted_after="2h" plu_sync="0">Google</proxy_group>
  1049.     </proxy_groups>
  1050.   </request_thread_pool>
  1051.  
  1052. </settings>
  1053.