Подключение php скриптов к шаблону вывода (макрос PHP_SCRIPT, отправка POST и GET запросов)

К шаблону вывода можно подключить любой php-скрипт, которому будут отправляться POST-данные при парсинге контента. С помощью макроса шаблона вывода PHP_SCRIPT вы можете отправить любой код (или текст) скрипту и получить от него ответ в виде обработанного кода. Также можно добавлять данные в MySQL-базу на сервере.

Обратите внимание на опции макросов PHP_SCRIPT

Content Downloader

В опциях можно выбрать библиотеку для отправки запросов, рекомендуется использовать Clever Internet Suite (так как она более продвинутая). Библиотеку INDY в PHP_SCRIPT мы решили оставить. Ее использование отличается в написании параметров макроса. Хелп по использованию макросов PHP_SCRIPT с библиотекой INDY ниже в спойлере.

Хелп по использованию макросов PHP_SCRIPT с библиотекой INDY
Данные в скрипт отправляются методом POST (имена POST-параметров вы указываете сами. Если вы хотите отправить в скрипт несколько параметров, то разделяйте их {linebreak} или переносом строки, например: data=[DATAENCODE]123[/DATAENCODE]{linebreak}title=[DATAENCODE]567[/DATAENCODE]{linebreak}img=[DATAENCODE]777.jpg[/DATAENCODE]).

ВАЖНО: отправляемые данные должны браться во внутреннюю функцию PHP_SCRIPT – [DATAENCODE]…[/DATAENCODE], которая закодирует данные в URL-кодировку (PHP-скрипт на сервере (куда вы отправляете данные) автоматически расшифрует эти POST-данные из URL-кодировки при их получении)! Только так можно отправлять многострочный текст, русский текст или html-код!

1
2
<PHP_SCRIPT=http://site.ru/script.php>data=[DATAENCODE]<CD_GRAN_1!>[/DATAENCODE]
data2=[DATAENCODE]<CD_GRAN_2!>[/DATAENCODE]</PHP_SCRIPT>

В шаблоне вывода может быть сколько угодно много подключенных скриптов.

Простой пример PHP-скрипта, который получит данные из POST-параметра data и вернет их в программу:

1
2
3
<?php
echo $_POST["data"];
?>

Для того, чтобы программа приняла текст от скрипта в UTF-8 кодировке, необходимо поместить [UTF-8] в конец ссылки на скрипт:

1
2
<PHP_SCRIPT=http://site.ru/script.php[UTF-8]>data=[DATAENCODE]<CD_GRAN_1!>[/DATAENCODE]
data2=[DATAENCODE]<CD_GRAN_2!>[/DATAENCODE]</PHP_SCRIPT>

Как передать HTTP-заголовки в PHP_SCRIPT (по умолчанию они берутся из поля custom headers в ctrl+h):

HTTP-заголовки указываются в параметре HEADERS:

1
2
3
<PHP_SCRIPT=http://site.ru/script.php[UTF-8]><HEADERS>Accept-Encoding: UTFX
Accept: HTML</HEADERS>data=[DATAENCODE]<CD_GRAN_1!>[/DATAENCODE]
data2=[DATAENCODE]<CD_GRAN_2!>[/DATAENCODE]</PHP_SCRIPT>


Данные в скрипт отправляются методом POST. Имена POST-параметров вы указываете сами. Если вы хотите отправить в скрипт несколько параметров, то разделяйте переносом строки, например:

1
2
3
data=123
title=567
img=777.jpg

ВАЖНО: Отправляемые МНОГОСТРОЧНЫЕ значения параметров должны браться в [FIELDVALUE]…[/FIELDVALUE]

1
2
<PHP_SCRIPT=http://site.ru/script.php>data=[FIELDVALUE]<CD_GRAN_1!>[/FIELDVALUE]
data2=[FIELDVALUE]<CD_GRAN_2!>[/FIELDVALUE]</PHP_SCRIPT>



Для отправки JSON данных воспользуйтесь параметром [JSONREQUEST] (в POST данных может быть только один JSONREQUEST)

1
2
3
<PHP_SCRIPT=https://...[UTF-8]>
[JSONREQUEST]{"color1": "Red", "Color2": "Green", "Color3": "Blue"}[/JSONREQUEST]
</PHP_SCRIPT>



Также можно отправлять файлы с локального диска (добавив к началу нужной строки оператор [SUBMITFILE])

1
2
3
<PHP_SCRIPT=http://site.ru/script.php>data=[FIELDVALUE]<CD_GRAN_1!>[/FIELDVALUE]
data2=[FIELDVALUE]<CD_GRAN_2!>[/FIELDVALUE]
[SUBMITFILE]file=C:\\File.txt</PHP_SCRIPT>



В шаблоне вывода может быть сколько угодно много подключенных скриптов.

Простой пример PHP-скрипта, который получит данные из POST-параметра data и вернет их в программу:

1
2
3
<?php
echo $_POST["data"];
?>

Для того, чтобы программа приняла текст от скрипта в UTF-8 кодировке, необходимо поместить [UTF-8] в конец ссылки на скрипт:

1
2
<PHP_SCRIPT=http://site.ru/script.php[UTF-8]>data=[FIELDVALUE]<CD_GRAN_1!>[/FIELDVALUE]
data2=[FIELDVALUE]<CD_GRAN_2!>[/FIELDVALUE]</PHP_SCRIPT>

Для того, чтобы программа автоматически расшифровала JSON кодировку полученного текста, добавьте параметр [JSON_DECODE] в конец ссылки на скрипт:

1
2
<PHP_SCRIPT=http://site.ru/script.php[UTF-8][JSON_DECODE]>data=[FIELDVALUE]<CD_GRAN_1!>[/FIELDVALUE]
data2=[FIELDVALUE]<CD_GRAN_2!>[/FIELDVALUE]</PHP_SCRIPT>

Как передать HTTP-заголовки в PHP_SCRIPT (по умолчанию они берутся из поля custom headers в ctrl+h)

HTTP-заголовки указываются в параметре <HEADERS>:

1
2
3
4
5
6
<PHP_SCRIPT=http://site.ru/script.php[UTF-8]>
<HEADERS>Accept-Encoding: UTFX
Accept: HTML</HEADERS>
data=[FIELDVALUE]<CD_GRAN_1!>[/FIELDVALUE]
data2=[FIELDVALUE]<CD_GRAN_2!>[/FIELDVALUE]
</PHP_SCRIPT>

Как применять функцию поиск-замены к результатам работы макроса PHP_SCRIPT

Для применения функции поиск-замены к полученным данным используйте параметр <REPLACE>:

1
2
3
4
5
6
7
<PHP_SCRIPT=http://site.ru/script.php[UTF-8]>
<HEADERS>Accept-Encoding: UTFX
Accept: HTML</HEADERS>
<REPLACE>правила поиск-замены</REPLACE>
data=[FIELDVALUE]<CD_GRAN_1!>[/FIELDVALUE]
data2=[FIELDVALUE]<CD_GRAN_2!>[/FIELDVALUE]
</PHP_SCRIPT>

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

Сначала установите нужное количество попыток запросов в окне настроек макросов PHP_SCRIPT.

Затем добавьте внутрь макроса PHP_SCRIPT параметр CHECKENTRY

1
2
3
4
5
<PHP_SCRIPT=http://site.ru/script.php[UTF-8]>
...
<CHECKENTRY>Подстрока</CHECKENTRY>
...
</PHP_SCRIPT>

В случае, если ответ на запрос НЕ будет содержать в себе вхождение “Подстрока”, то будет произведен повторный вызов PHP_SCRIPT. Повторный вызов PHP_SCRIPT будет производиться до тех пор, пока не удовлетворится условие, указанное в параметре CHECKENTRY, либо не будет превышено указанное в настройках количество попыток запросов.

Если нужно делать повторный вызов PHP_SCRIPT, когда в ответе содержится указанное вхождение, то добавьте в параметр CHECKENTRY оператор {IFNOT}

1
2
3
4
5
<PHP_SCRIPT=http://site.ru/script.php[UTF-8]>
...
<CHECKENTRY>{IFNOT}Подстрока</CHECKENTRY>
...
</PHP_SCRIPT>



Примечание 1: В дереве макросов шаблона вывода (ctrl+2) вы можете найти множество PHP_SCRIPT: PHP_SCRIPT_0, PHP_SCRIPT, PHP_SCRIPT_2, PHP_SCRIPT_3, PHP_SCRIPT_4, PHP_SCRIPT_5. Все они работают одинаково, только выполняются в разное время (в определенном порядке). Зная это вы можете вызывать, например, макрос PHP_SCRIPT внутри макроса PHP_SCRIPT_2 (так как сначала выполнится PHP_SCRIPT, и только потом PHP_SCRIPT_2).

Примечание 2: Если вы используете PHP_SCRIPT для импорта данных в базу MySQL, не забывайте экранировать спец символы в отправленных данных функцией mysql_real_escape_string (http://sbfactory.ru/cd/?p=419):

1
2
3
4
5
<?php
...
$_POST[id] = mysql_real_escape_string($_POST[id]); #экранируем специальные символы в полученных от Content Downloader POST-данных id
...
?>

ВАЖНО: При отправке запросов к https://localhost… или http://localhost… прокси подставляться не будут!

Примечание 3: Если при работе макроса вы получаете ошибку запроса типа:

1
2
3
HTTP/1.1 400 Bad Request
или
The unknown error was occured: 80090326

Попробуйте поставить другие настройки HTTPS для библиотеки Clever Internet Suite (она используется для отправки POST-запросов в макросах <PHP_SCRIPT>

Content Downloader

Также учтите, что для загрузки данных на некоторых сайтах требуется ввести HTTP-заголовки запроса. Как это сделать написано выше. Для получения нужных HTTP-заголовков можно воспользоваться монитором сети в браузере Firefox (shift+ctrl+e).

Connect, read timeout, user agent, и custom headers для макросов PHP_SCRIPT берутся из окна настроек HTTP-запросов программы (ctrl+h). Учтите, что сменить user agent (и другие HTTP-заголовки) для макросов PHP_SCRIPT можно с помощью параметра <HEADERS> (читайте про <HEADERS> выше). Например, для отмены применения custom headers из окна ctrl+h достаточно указать пустой или заполненный параметр <HEADERS>, а для смены user agent нужно просто указать в параметре <HEADERS> строчку с новым user agent.





Дополнительные возможности


Отправка GET запроса (параметр [GET])
В макросах PHP_SCRIPT по умолчанию используется POST запрос. Для отправки GET запроса добавьте параметр [GET] после URL, как показано ниже

1
2
3
<PHP_SCRIPT=http://sbfactory.ru/[UTF-8][GET]>
<HEADERS></HEADERS>
</PHP_SCRIPT>

Примечание: При использовании GET запроса POST данные не отправляются!

Отправка PUT запроса (параметр [PUT])
В макросах PHP_SCRIPT по умолчанию используется POST запрос. Для отправки PUT запроса добавьте параметр [PUT] после URL, как показано ниже

1
2
3
4
5
<PHP_SCRIPT=http://sbfactory.ru/[UTF-8][PUT]>
<HEADERS></HEADERS>
Parameter1=Value1
Parameter2=Value2
</PHP_SCRIPT>

Примечание: PUT запрос сейчас поддерживает только библиотека WIN. Выберите библиотеку WIN для PHP_SCRIPT, как показано на скриншоте ниже

Content Downloader

Получение cookie после выполнения POST запроса (параметр [GETCOOKIES])
Например, вам нужно получить cookie после авторизации методом POST через макрос PHP_SCRIPT. Добавьте параметр [GETCOOKIES] после URL, как показано на скриншоте ниже

Content Downloader



1 Star2 Stars3 Stars4 Stars5 Stars (оценок: 16, средний балл: 5.00)
Loading...
Автор: admin, 23 January 2011
Рубрики: Парсинг
Tags: ,
Есть 26 коммент. к сообщению: “Подключение php скриптов к шаблону вывода (макрос PHP_SCRIPT, отправка POST и GET запросов)”
  1. Виталий says:

    Немного не понятно (я далек от программирования :(). Нельзя ли привести конкретный пример конкретного скрипта. Что-нибудь самое простое, например, сделать, чтобы из урла страницы остался только домен.
    В шаблоне, насколько я понимаю, это будет выглядеть так:
    data=
    Сам скрипт выглядит так, вроде:

  2. admin says:

    Дописал в конец поста пример скрипта (данный скрипт конвертирует отправленный код из url кодировки в “нормальную”).

  3. Виталий says:

    Спасибо, становится понятней. Если ссылку ставить на скрипт на Денвере (вообще локальном сервере) будет работать?

    • Admin says:

      С локального не пробовал. Попробуйте, отпишитесь 😉

      • Виталий says:

        У мну, что с локального сервера ничего не получается, что с нормального. Пойду курить маны по пхп.

  4. Ilya says:

    Все работает… Спасибо автору за работу.

  5. Alex says:

    Может и подключаются очень просто, но для меня, не знакомого с php, это совсем не “очень просто”. У меня есть предложение: сделать страницу с скриптами, на которую любой мог бы опубликовать свои скрипты. А остальные могли бы найти нужный. Я например, нуждаюсь в скрипте обрезания n кол. знаков от начала парсинга границы. Может кто подскажет? Здесь нашел что то по теме, но надо как то переделать что бы не пробелы удирал скрипт, а знаки. http://www.e-inform.ru/php_str_obrez.php

  6. alegz says:

    тоже нужно обрезать каждое слова до первой буквы

  7. Yumin says:

    А как боретесь с кодировкой? У меня вся информация по пхп скриптам в кракозякбрах выводиться в csv файле.

  8. zilon says:

    у меня тоже проблема с кодировкой при переводе статей. Скрипт сам по себе, отдаёт переведённый текст, в нормальной кодировке, а после подключения к CD получаются краказябры 🙁

  9. Юрий says:

    Да уж, помню времена, когда файлик с 10 строками кода ПХП был для меня программой, и я не знал что есть что:)
    Вообщем так, ребята. Кому нужна помощь по ПХП – обращайтесь, помогу за определенную плату.
    627-641-940 – це асько, пишите.
    Если интересует, предоставлю в аренду свой хостинг с размещением на нем Ваших скриптов.

  10. Vasia says:

    Поделитесь рабочим скриптом переводчика – отблагодарю!!!

  11. Татьяна says:

    Клевая вещь! Очень помогает при парсинге! Разработчику спасибо за нее!

  12. гость says:

    PHP_SCRIPT не поддерживает работу через прокси, можно добавить такую поддержку? Для примера, на mosgid.ru загрузка телефонов имеет лимит для одного адреса, поэтому нужно через прокси заходить. Сами страницы загружаются через прокси, а телефоны нет.

    • admin says:

      Постараюсь сделать на следующей недели. Обещать не буду.
      Спасибо!

    • admin says:

      Content Downloader X версии 10.88 (19.04.2014):

      Обновление по просьбе клиента

      – Макросы шаблона вывода PHP_SCRIPT теперь поддерживают прокси (не SOCKS, при условии выбранной библиотеки INDY в ctrl+h);
      – Добавлены кнопки вызова редактора поиск-замены для фильтров ссылок и для списков ссылок сканера сайтов;
      – Несколько других доработок.

      • shtrek says:

        А можно ли выключить вот эту замечательную фичу как-нибудь? Мой php, почему-то, не обрабатывает запросы через прокси, а включается прокси лишь глобально.
        Ну, или можно коротенький совет по устранению досадного недостатка моего php – что проще.
        Продублирую на форум.

        • admin says:

          Content Downloader X версии 10.9950 (04.07.2014):

          Обновление по просьбе клиента

          – Теперь можно отдельно включать (ctrl+r) использование прокси для макросов шаблона вывода PHP_SCRIPT и GETMORECONTENT.

  13. гость says:

    [DATAENCODE] в актуальной версии не работает, программа так и отправляет это на скрипт

  14. Виталий says:

    немного не понятно про скрипт-переводчик с англ на рус. скрипт надо установить у себя на серваке и уже постом отправлять данные из CD?

Написать комментарий

Последние статьи

css.php