PHP скрипт для распределения трафика (TDS)

V 0.6.8
Распределение трафика по группам и потокам.
Фильтрация трафика по:
— типу устройства (компьютер, планшет, мобильный телефон);
— мобильному оператору;
— стране;
— городу;
— языку браузера;
— наличию в UserAgent;
— наличию в реферере;
— наличию в ключевом слове;
— меткам в ключевых словах (для каждой таблетки своя страница платника);
Отсеивание:
— ботов;
— посетителей с яндекс браузером;
— посетителей с пустым реферером;
— неуникальных посетителей;
Разнообразные типы редиректов.
Перехват трафика через script и iframe.
Статистика по группам и потокам.
Сохранение и экспорт логов.
Сохранение ключевых слов в текстовых файлах.
API для скрытия домена TDS.
Может работать в корне или папках.
...

Установка

Для нормальной работы требуется хостинг Apache + PHP 5.4.x. и выше, с включенным SQLite3, желательно наличие SSD диска.
Залейте все файлы по FTP, в корень или папку.
Настройте config.php
Вход в админку admin.php
Для работы в папке укажите ее название в переменной $folder (config.php).
Если при установке возникают проблемы, включите в config.php сохранение ошибок PHP ($error_log = 1;).
Все ошибки и предупреждения будут сохранены в файле php_errors.log.

Скрины "популярных" ошибок

Отключено sqlite3 в php.


В php.ini отключена функция parse_ini_file.
Найдите в php.ini строку
disable_functions = ....
И посмотрите, нет ли в списке отключенных функций parse_ini_file.


Отключен Javascript в браузере.

Проблемы с каптчей
1. В PHP должна быть установлена графическая библиотека GD Library.
2. Проверьте не закончилось ли место/инноды на вашем хостинге.
3. Узнайте в php.ini в какую папку сохраняются сесии (session.save_path), проверьте права на эту папку.

"Error 404" при переходе в группу
1. Проверьте или залит .htaccess
2. В конфиге Apache (httpd.conf) должно быть AllowOverride All

Перенос на другой сервер/домен

1. Отключите TDS в config.php ($disable_tds = 1;)
2. Подождите пару минут что бы закрылись все соединения с БД.
3. Скопируйте все файлы на новый сервер.

Безопасность

1. Измените в config.php логин и пароль для входа в админку, по умолчанию admin/admin.
2. Переименуйте файл админки admin.php и пропишите новое название в config.php
3. Разрешите в config.php доступ к админке только с нужного IP.
4. По желанию можно изменить названия папок для логов и сохраненных ключевых слов.

Основные папки и файлы

database - списки IP адресов и UA.
Файлы из этой папки доступны для редактирования в админке.
IP мобильных операторов:
— wap.txt;
Актуальные списки IP операторов можно получить в таких ПП как richwap.ru, juddy.biz и др.
Списки IP ботов:
— ip_baidu.txt - Baidu.
— ip_bing.txt - Bing&MSN.
— ip_google.txt - Google.
— ip_mail.txt - Mail.ru.
— ip_yahoo.txt - Yahoo!.
— ip_yandex.txt - Yandex.
— ip_others.txt - дополнительный список IP ботов.
— ip_grabber.txt - IPGrabber.
— ua_blacklist.txt - черный список UA.
— list_ip.txt - черно/белый список IP.
— separation.txt - файл с метками и ссылками для них.
— signature_bots.txt - сигнатуры ботов.
IP адреса в списках можно указывать вот так:
IPv4
192.168.0.0
Диапазон
192.168.0.1-192.168.0.254
CIDR
192.168.0.0/24
IPv6
2001:4860:4801:2002:0000:0000:0000:0000
2001:4860:4801:2002::
Диапазон
2001:4860:4801:2002:0000:0000:0000:0000-2001:4860:4801:2002:ffff:ffff:ffff:ffff
CIDR
2001:4860:4801:2002::/64
lib/sypex_geo - файлы Sypex Geo, нужны для определения страны и города посетителя по IP-адресу.
Обновления здесь.
Прямые ссылки на архивы с обновлениями:
Sypex Geo Country
Sypex Geo City (utf-8)
lib/mobile_detect - файлы Mobile Detect Library, нужны для определения типа устройства (компьютер, планшет, мобильный телефон).
Обновления здесь.
Нужен только файл Mobile_Detect.php
application - дополнительные скрипты.

Папки которые zTDS может создать в процессе работы

temp - кэш для Remote и IPGrabber.
ini - ini файлы с настройками групп.
keys - файлы с ключевыми словами по которым приходили посетители.
log - лог-файлы.
Если у вас не создаются/не сохраняются группы, ключевые слова или логи, создайте вручную эти папки и выставьте для них chmod 777.

Логика работы

Сначала идентифицируется ID группы.
Если нет группы с таким ID - посетитель сливается в «мусор» (переменная $trash в config.php).
Если есть группа с таким идентификатором - ищется поток с подходящими параметрами в этой группе.
Если подходящий поток не найден - посетитель сливается в замыкающий аут группы.
Если подходящий поток найден - посетитель сливается на URL потока.
Потоки перебираются последовательно.

Типы перенаправления

API - получить сериализованные данные посетителя.
HTTP redirect - http редирект, «302 Found».
Iframe - открыть в фрейме.
Iframe redirect - редирект из iframe.
Iframe selection - перехват трафика через iframe.
JS redirect - javascript редирект.
JS selection - перехват трафика через script.
JavaScript - свой код JavaScript.
Meta refresh - meta редирект.
Show out - показать URL аута (разновидность API).
Show page html - сгенерировать и показать html страницу с вашим содержимым.
Show text - показать текст, например «Page not found».
Stop - остановить работу TDS (не отдавать код редиректа).
Under construction - сгенерировать и показать «страница в разработке».
403 Forbidden - доступ запрещен, «403 Forbidden».
404 Not Found - страница не найдена, «404 Not Found».
500 Server Error - внутренняя ошибка сервера, «500 Internal Server Error».
Если вы сливаете посетителей кнопкой/ссылкой/каким то своим редиректом, то есть происходит прямой переход с дорвея на TDS и потом на платник, используйте типы редиректа «HTTP redirect», «Iframe redirect», «JS redirect», «Meta refresh», «Show page html», «Show text», «Under construction», «403 Forbidden», «404 Not Found», «500 Server Error». Эти редиректы происходят на стороне TDS.
Для «Iframe», «Iframe selection», «JS selection», «JavaScript» с TDS запрашивается код javascript, редирект происходит с дорвея на платник.
Тип редиректа «Stop» используется для того что бы можно было не отдавать код редиректа ботам или некоторым посетителям (оставить их на дорвее).

Настройки группы

Название группы

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

Идентификатор группы (ID)

Для каждой группы существует уникальный идентификатор, например dwl.
Ссылка на группу с таким идентификатором будет выглядеть вот так:
Вариант 1
http://tds.com/dwl/Цой Кукушка скачать
Вариант 2
http://tds.com/dwl?q=Цой Кукушка скачать
Вариант 3, без передачи ключевого слова
http://tds.com/dwl
Без слеша в конце!
q - произвольный параметр [a-Z0-9]*
Цой Кукушка скачать - ключевое слово.
ID регистрозависим.
После создания группы изменить ID нельзя.

Замыкающий аут

В этот аут попадут посетители для которых не нашлось потока с подходящими параметрами.
Можно прописывать URL, текст, HTML код или JS код, в зависимости от выбранного типа редиректа.
При использовании типов редиректа «API» и «Show out» и типе распределения «Rotator», в замыкающем ауте можно указывать несколько URL через разделитель «|||».
Для всех остальных типов редиректа, только один.

Уникальность

Уникальность посетителей можно определять по Cookies или по IP.
Все посетители, с отключенными Cookies, в статистике группы с уникальностью «по Cookies», будут отмечены как уникальные.
Фильтр уникальности по IP работает на основе логов.
Если логи отключены, уникальность будет проверяться по Cookies.
Уникальность определяется в пределах группы.

Срок уникальности посетителей

Время, через которое посетитель снова станет уникальным для этой группы.
Данные нужно вводить в часах.

Группа активна

Если отключить группу, весь трафик будет отправлен по ауту указанному переменной $trash (config.php).

Сохранять ключевые слова

Если включить сохранение, в папке keys будет создан файл, в котором будут сохранятся ключевые слова по которым посетители попадали на TDS.
Ключевые слова сортируются по группам и сохраняются в файлы типа 2015-12-14.txt
Название для папки keys можно изменить в config.php

Сохранять ключевые слова полученные из Referer

Если вы используете «API» или передаете с дорвеев реферер через дополнительные параметры, можно включить сохранение ключевых слов вытянутых из рефереров google, mail.ru, rambler.ru, tut.by, yandex, nigma.ru
Название файлов будет таким - 2015-12-14-se.txt

Вести лог

Если включить сохранение, в папке log будет создана БД Sqlite с таким же названием как ID группы.
Название для папки log можно изменить в config.php
Логи и статистику можно просмотреть в админке.

Комментарий

Опишите детали группы, что бы не забыть что к чему.

Настройка потока

Фильтры

Исключать - исключать в этом потоке всех кто подходит под выбранные параметры, остальных отбирать.
Отбирать - отбирать всех кто подходит под выбранные параметры, остальных исключать.
Выключено - отбирать всех подряд, фильтр выключен.

Main

Название потока

В названии потоков можно использовать латинские буквы в верхнем или нижнем регистре, цифры, тире и знак нижнего подчеркивания.
Название должно быть уникальным в пределах группы, если не хватает фантазии можно просто нумеровать.
Для клонирования потока, выберите нужный поток, измените его название и нажмите Submit.
Переименовать поток нельзя.

Тип распределения

- Rotator - ротация URL из аута по кругу;
- Evenly - равномерное распределение трафика по всем URL (сплит-тестирование);
- Random - случайный URL аута;
При отключеных логах Evenly будет работать как Rotator.

Ауты

Можно прописывать URL, текст, HTML код или JS код, в зависимости от выбранного типа редиректа.
В каждом ауте может быть несколько URL (или кодов) указанных через разделитель «|||».
Например
http://platnik-1.ru
|||
http://platnik-2.ru
|||
http://platnik-3.ru
или вот так:
http://platnik-1.ru|||http://platnik-2.ru|||http://platnik-3.ru
Если ротация платников (см. «Тип распределения») не нужна, указываете только один URL без разделителя.
Макросы
[KEY] - ключевое слово.
[PAR-1], [PAR-2], [PAR-3], [PAR-4], [PAR-5] - дополнительные параметры которые мы передавали на TDS.
[REMOTE] - данные полученные через API ПП (домен или URL).
[PATH] - путь к папке с файлами TDS.
Если TDS работает в корне, в [PATH] будет tds.com
Если TDS работает в папке, в [PATH] будет tds.com/folder
[DOMAIN] - домен дорвея с которого посетитель попал на TDS.
[COUNTRY] - страна посетителя.
[CITY] - город посетителя.
[LANG] - язык браузера посетителя.
[IP] - IP посетителя.
[KEY_SE] - ключевое слово полученное из реферера при передаче дополнительных параметров или использовании типов редиректа «API», «Show out» (в большинстве случаев этот макрос пустой).
При использовании API доступны макросы:
[RAWURLENCODE_REFERER] - rawurlencode($referer).
[URLENCODE_REFERER] - urlencode($referer).
[RAWURLENCODE_PAGE_URL] - rawurlencode($page_url).
[URLENCODE_PAGE_URL] - urlencode($page_url).
$referer - реферер.
$page_url - URL текущей страницы.
Примеры URL в аутах
http://platnik.ru - без передачи ключевого слова.
http://platnik.ru/[KEY] - с передачей ключевого слова.
http://platnik.ru/page.php?q=[KEY] - с передачей ключевого слова.
http://platnik.ru/page.php?q=[KEY]&a=[PAR-1]&b=[PAR-2]&c=[PAR-3] - с передачей ключевого слова и дополнительных параметров.
http://platnik.ru/page.php?referer=[RAWURLENCODE_REFERER]&page=[RAWURLENCODE_PAGE_URL] - с передачей ключевого слова.

Распределять по ссылкам из файла

Создайте в папке database файл с метками и ссылками для них (или используйте separation.txt).
Пропишите в соответствующем поле название txt файла.
Содержимое файла на примере фармы
Без передачи ключевого слова:
viagra;http://platnik.com/viagra
cialis;http://platnik.com/cialis

С передачей ключевого слова:
viagra;http://platnik.com/viagra/[KEY]
cialis;http://platnik.com/cialis/[KEY]

Можно указывать несколько платников через разделитель.
cialis;http://platnik-1.com/cialis|||http://platnik-2.com/cialis

Можно использовать макрос [REMOTE].
zyrtec;http://[REMOTE]/zyrtec

Посетитель прийдет на страницу с ключевым словом «buy viagra cheap online», перейдет на TDS.
TDS проверит ключевое слово на наличие меток из вашего файла, найдет там метку «viagra» и отправит посетителя на тематическую страницу платника - http://platnik.com/viagra
Все для кого не нашлось в файле подходящих URL, будут отправлены в аут потока.

Вероятность редиректа для JavaScript

Можно задать вероятность редиректа при использовании «JavaScript» и «JS selection».
Для замыкающего аута вероятность редиректа 100%.

Devices

Типы устройств

Фильтр по типу устройств.

WAP

Мобильные операторы

Фильтр по мобильным операторам работает на основе списков IP.
Если вы установите хотя бы для одного оператора положение «отбирать» - весь десктопный трафик будет исключен в этом потоке.

Geo

Страны

Двухбуквенные ISO-коды стран.
Данные нужно вводить через запятую, регистр букв значения не имеет.
Полный список здесь.

Города

Названия городов на английском языке.
Данные нужно вводить через запятую, регистр букв значения не имеет.
Полный список здесь.

Коды регионов

Данные нужно вводить через запятую, регистр букв значения не имеет.
Полный список стран здесь.
Геокоды России.
Чтобы отобрать/исключить посетителей из Тульской и Воронежской области, нужно прописать: RU-TUL,RU-VOR

Filters

Языки браузеров

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

Наличие в UserAgent

Например в каком то потоке нам нужно отсеять посетителей с браузером Firefox.
Простое сравнение
Вписываем в соответствующее поле firefox (регистр не важен), и выбираем исключать.
При простом сравнении можно указывать только один параметр, в нашем случае firefox.
С помощью регулярного выражения
С учетом регистра: /Firefox/
Без учета регистра: /Firefox/i
Если в потоке нужно исключить пользователей с Firefox и Chrome, регулярное выражение будет таким: /firefox|chrome/i
С помощью этого фильтра можно отбирать/исключать посетителей с нужными операционным системам.
Документация по регулярным выражениям на php.net.
Шпаргалка по регулярным выражениям.

Наличие в реферере

Если вы используете тип редиректа «API», «Show out» или передаете реферер через дополнительные параметры, в реферере будет URL страницы с которой посетитель попал на дорвей.
Во всех остальных случаях, в реферере будет URL страницы вашего дорвея с которой посетитель попал на TDS.
Принцип работы такой же как в фильтре «Наличие в UserAgent».

Наличие в ключевом слове

Принцип работы такой же как в фильтре «Наличие в UserAgent».
Пример регулярного выражения с учетом регистра: /Viagra/u
Пример регулярного выражения без учета регистра: /viagra/iu
Если ключевые слова не на русском языке, модификатор /u можно не использовать.
Для ключевых слов в кириллице используйте только нижний регистр.
Все кириллические буквы в ключевых словах автоматически преобразуются в нижний регистр.

Bots

Действие над ботами

API - получить сериализованные данные посетителя.
HTTP redirect - http редирект, «302 Found».
JavaScript - свой код JavaScript.
Meta refresh - meta редирект.
Show out - показать URL аута (разновидность API).
Show page html - сгенерировать и показать html страницу с вашим содержимым.
Show text - показать текст, например «Page not found».
Skip - пропустить (отнестись как к обычному пользователю).
Stop - остановить работу TDS (не отдавать код редиректа).
Under construction - сгенерировать и показать «страница в разработке».
403 Forbidden - доступ запрещен, «403 Forbidden».
404 Not Found - страница не найдена, «404 Not Found».
500 Server Error - внутренняя ошибка сервера, «500 Internal Server Error».

Искать признаки ботов в UserAgent

Если в потоках отключена проверка и найден подходящий поток, в логах не будет отмечено что это бот.
Если не найден подходящий поток и бот попал в «замыкающий аут», в логах будет отмечено что это бот.
Этот фильтр лучше не отключать.

Проверять доменное имя по IP

Эта проверка работает только для некоторых ботов Baidu, Bing/MSN, Google, Mail.ru, Yahoo! и Yandex.

Проверять UserAgent в черном списке

database/ua_blacklist.txt.
Наполняется только вручную.

Сохранять IP ботов

Сохранять IP ботов в базе.

Проверять IP в базе

Проверять IP в выбранных базах.

IPGrabber

Есть два варианта использования базы IPGrabber
1. Онлайн проверка IP (Online).
2. Проверка IP в базе полученной с bseolized.com (File).
При использовании второго варианта zTDS будет самостоятельно обновлять базу IP.
Периодичность обновления базы настраивается в config.php
Страница IPGrabber: http://bseolized.com/products/74-ipgrabber
Подробности работы API: https://my.bseolized.com/doc/ipgrabber/api

Remote

Remote URL

Позволяет загрузить указанную страницу, взять с неё домен или ссылку и отправить по ней посетителя.
В Remote URL можно использовать макросы [COUNTRY], [CITY], [LANG], [IP], [KEY].
Макросы работают только при отключенном кешировании, для этого нужно установить время кеширования равным "0".
Примеры.
API ПП отдает чистый, не забаненый домен, нам нужно его получить.
Прописываем в поле Remote ссылку на нужную страницу ПП, например http://site.com/page.php
В Аут прописываем
http://[REMOTE]/?r=1234&q=[KEY]
Пример с передачей дополнительных параметров:
http://site.com/page.php?a=[COUNTRY]&b=[CITY]&c=[LANG]&d=[IP]&e=[KEY]
Loadpays.com
Надо получить домен для платника LoadBoom.
Кеширование: не менее 1800 секунд (пол часа).
Вариант 1:
Ссылка на API Loadpays: http://loadpays.com/api/conf/conf.xml
RegExp: /<domain id="22">(.+?)<\/domain>/i
Вариант 2:
Ссылка на API Loadpays: http://loadpays.com/api/conf/?d=22
22 это ID LoadBoom.
Список сервисов и их ID - http://loadpays.com/member/?p=promo&sp=api

Передача дополнительных параметров с дорвеев на TDS

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

<?php
if(empty($_SERVER['HTTP_REFERER'])){$ref = '';}
else{$ref = $_SERVER['HTTP_REFERER'];}
$array[0] = array(
'referer'=>$ref,
'par_1'=>'параметр 1',
'par_2'=>'',
'par_3'=>'',
'par_4'=>'',
'par_5'=>''
);
$parameters = base64_encode(serialize($array));
?>
URL ссылки на TDS будет выглядеть вот так
http://tds.com/dwl?q=Цой Кукушка скачать&p=<?php echo $parameters; ?>
p - произвольный параметр [a-Z0-9]*
Дополнительные параметры можно будет передать через TDS на платник используя в аутах макросы [PAR-n].
При передаче дополнительных параметров на TDS передается реферер посетителя.
В реферере могут быть ключевые слова по которым посетитель попал на дорвей с ПС.
Что бы их сохранять нужно включить соответствующий чекбокс в настройках группы.

API

При использовании API вы получите от TDS все данные о посетителе.
Домен TDS не будет видно в коде дорвея.
В корень каждого дорвея кладем файл api.php из папки «application».
В файле api.php меняем ID группы, домен TDS и API ключ (он должен быть таким же как в config.php).
API ключ – это своего рода секретный пароль для обращения к TDS.
Прописываем в самом верху шаблона, начиная с первой строки, код

<?php
$z_key = '[BKEYWORD]';
$z_parameter_1 = 'параметр 1';
$z_parameter_2 = '';
$z_parameter_3 = '';
$z_parameter_4 = '';
$z_parameter_5 = '';
include $_SERVER['DOCUMENT_ROOT'].'/api.php';
?>
$z_key - ключевое слово.
$z_parameter_x - дополнительные параметры передаваемые через TDS на ПП.
Если передача ключевого слова и дополнительных параметров не нужна, можно прописать вот так

<?php include $_SERVER['DOCUMENT_ROOT'].'/api.php'; ?>
Все данные посетителя будут доступны в переменных PHP:

$z_out - ссылка на платник/код
$z_lang - язык браузера
$z_country - страна
$z_city - город
$z_device - тип устройства (computer/tablet/phone)
$z_operator - оператор (beeline/megafon/mts/tele2/azerbaijan/belarus/kazakhstan/ukraine/wap-1/wap-2/wap-3/$z_empty)
$z_bot - бот (baidu/bing/google/mail/yahoo/yandex/others/$z_empty)
$z_uniq - уникальный (yes/no)
При использовании API, часть ботов сразу отсеивается по юзергенту, данные для них не запрашиваются с TDS (можно отключить в config.php).

Пример использования API
WAP трафик нужно отправить на http://wap-platnik.ru без передачи ключевого слова, остальным показать в фрейме http://desktop-platnik.ru с передачей ключевого слова.
Кладем в корень дорвея файл api.php, настраиваем его.
В самом верху шаблона прописываем код

<?php
$z_key = '[BKEYWORD]';
include $_SERVER['DOCUMENT_ROOT'].'/api.php';
if($z_operator != $z_empty && $z_bot == $z_empty && !empty($z_out)){header("Location: $z_out");}
?>
Перед тегом </head> размещаем код

<?php
if($z_bot == $z_empty && !empty($z_out)){echo "
<frameset rows=\"100%,*\" border=\"0\" frameborder=\"0\" framespacing=\"0\" framecolor=\"#000000\"><frame src=\"$z_out\"><noframes>
";}
?>
Если нужен JS редирект WEB трафика, перед тегом </body> размещаем код

<?php
if($z_bot == $z_empty && !empty($z_out)){echo "<script type=\"text/javascript\">window.location = \"$z_out\";</script>";}
?>
Если нужен http редирект всего трафика, весь код в верху шаблона будет таким

<?php
$z_key = '[BKEYWORD]';
include $_SERVER['DOCUMENT_ROOT'].'/api.php';
if($z_bot == $z_empty && !empty($z_out)){header("Location: $z_out");}
?>
В TDS создаем группу.
Создаем первый поток, прописываем в аут - http://wap-platnik.ru, выбираем тип редиректа «API», «Билайн, Мегафон, МТС, Теле2...» устанавливаем в «отбирать», «Действие над ботами» устанавливаем в «Skip».
Создаем второй поток, прописываем в аут - http://desktop-platnik.ru/[KEY], «Действие над ботами» устанавливаем в «Skip».

HTTP redirect и JS redirect

HTML код ссылки на TDS для размещения на дорвее

<a href="http://tds.com/dwl/[BKEYWORD]">Download</a>

Iframe

Код для размещения на дорвеях

<script type="text/javascript" src="http://tds.com/dwl"></script>
или

<frameset rows="100%,*" border="0" frameborder="0" framespacing="0" framecolor="#000000"><frame src="http://tds.com/dwl"><noframes>
При использовании второго кода вы не сможете показывать ботам страницы дорвея, они будут видеть пустую страницу.

JS selection и Iframe selection

Создаем отдельную группу, указываем тип редиректа «Stop».
Добавляем поток, указываем тип редиректа «JS selection» или «Iframe selection».
Билайн, Мегафон, МТС, Теле2 устанавливаем в «Отбирать».
Размещаем на страницах дорвея код
JS selection

<script type="text/javascript" src="http://tds.com/dwl"></script>
Iframe selection

<iframe src="http://tds.com/dwl" frameborder="0" width="0" height="0"></iframe>
При таких настройках будет отбираться только операторский WAP трафик.
Все остальные посетители попадут в замыкающий аут группы, они не получат от TDS код редиректа и останутся на дорвее.
При перехвате трафика через script и iframe передача ключевого слова не работает.
Если нужна передача ключевого слова, используйте тип редиректа «JavaScript».

JavaScript

Этот тип редиректа позволяет отдавать дорвеям свой код JavaScript.
Создаем новую группу с типом перенаправления «Stop».
Создаем поток с типом перенаправления «JavaScript», настраиваем остальные параметры потока.
Размещаем на страницах дорвея код

<script type="text/javascript" src="http://tds.com/dwl"></script>
В Аут прописываем код редиректа на JavaScript, с задержкой в 3 секунды

setTimeout("window.location.href='http://platnik.ru'", 3000);
http://platnik.ru - ссылка на платник.
3000 - задержка редиректа в миллисекундах.
Посетитель попадает на дорвей, если он нам подходит по параметрам, TDS отдаст ему код редиректа.

Примеры других JavaScript кодов
Редирект в новое окно с задержкой

setTimeout(function() {window.open("http://platnik.ru", '_blank')}, 3000);
Редирект при наведении курсора мыши на картинку

document.write("<div align='center' style='border:0px; margin-bottom:2000px;'><img src='http://oboi.kards.qip.ru/images/wallpaper/f0/15/136688_1280_800.jpg' body onMouseOver='; document.location=\"http://platnik.ru\";'></div>");
Модальное окно

document.write("<link rel='stylesheet' type='text/css' href='http://[PATH]/template/modal/style.css'/><div id='parent_popup'><div id='popup'><a href='http://platnik.ru'><img border='0' src='http://[PATH]/template/modal/img.png'></a><a class='close' title='Закрыть' onclick=\"document.getElementById('parent_popup').style.display='none';\">X</a></div></div>");
var delay_popup = 3000;setTimeout("document.getElementById('parent_popup').style.display='block'", delay_popup);
Фрейм

document.write('<frameset rows="100%,*" border="0" frameborder="0" framespacing="0" framecolor="#000000"><frame src="http://platnik.ru"></frameset>');
Показываем кнопку

document.write("<input type='button' onClick=\"window.location.href = 'http://platnik.ru'\" value='Скачать'>");
Показываем кнопку с картинкой

document.write("<a href='http://platnik.ru'><img src='/button.png' alt='Скачать'></a>");
Показываем ссылку

document.write("<a href='http://platnik.ru'>Скачать</a>");
Пример использование JavaScript с передачей ключевого слова
В самом верху шаблона прописываем PHP код

<?php $key = [BKEYWORD]; ?>
Код JavaScript будет таким

<script type="text/javascript" src="http://tds.com/dwl/<?php echo $key; ?>"></script>
Можно заменить эти два кода одним

<script type="text/javascript" src="http://tds.com/dwl/[BKEYWORD]"></script>
Генерируем и заливаем дорвей …

Show out

«Show out» это разновидность API.
При использовании «Show out» вы получите от TDS только URL аута.
Используя этот тип редиректа можно скрыть домен TDS.
Вариант 1
Создайте группу.
Создайте поток, в настройках укажите тип редиректа «Show out», «Действие над ботами» установите в «Stop».
В корень каждого дорвея кладем файл api.php
Прописываем в самом верху шаблона, начиная с первой строки, основной код

<?php
$z_key = '[BKEYWORD]';
$z_parameter_1 = 'параметр 1';
$z_parameter_2 = '';
$z_parameter_3 = '';
$z_parameter_4 = '';
$z_parameter_5 = '';
include $_SERVER['DOCUMENT_ROOT'].'/api.php';
?>
$z_key - ключевое слово.
$z_parameter_x - дополнительные параметры передаваемые через TDS на ПП.
Если передача ключевого слова и дополнительных параметров не нужна, можно прописать вот так

<?php include $_SERVER['DOCUMENT_ROOT'].'/api.php'; ?>
Пример ссылки на платник

<?php if(!empty($z_out)){echo '<a href="'.$z_out.'">Download</a>';} ?>
Пример http редиректа
Коды совмещены.

<?php
$z_key = '[BKEYWORD]';
$z_parameter_1 = 'параметр 1';
$z_parameter_2 = '';
$z_parameter_3 = '';
$z_parameter_4 = '';
$z_parameter_5 = '';
include $_SERVER['DOCUMENT_ROOT'].'/api.php';
if(!empty($z_out)){header("Location: $z_out");}
?>
Пример с фреймом
Разместите в самом верху основной код.
Перед тегом </head> разместите код

<?php
if(!empty($z_out)){echo "<frameset rows=\"100%,*\" border=\"0\" frameborder=\"0\" framespacing=\"0\" framecolor=\"#000000\"><frame src=$z_out><noframes>";}
?>
Пример JS редиректа
Разместите в самом верху основной код.
Перед тегом </body> разместите код

<?php
if(!empty($z_out)){echo "<script type=\"text/javascript\">window.location = \"$z_out\";</script>";}
?>
Вариант 2
В настройках потоков выбираем тип редиректа «Show out» (для ботов тоже), прописываем ауты.
В корень каждого дорвея кладем файл go.php из папки «application».
В файле go.php прописываем ID группы, домен TDS, резервный URL и API ключ.
Отправляем посетителей дорвея на страницу http://doorway.com/go.php?q=keyword
Скрипт отправляет данные посетителя на TDS, получает URL платника и отправляет туда посетителя.
Если получить URL платника не удалось, посетитель отправится на резервный URL.
go.php можно переименовывать.

Show text и Show page html

Можно писать обыкновенный текст или html код, например

<center><h3>Доступ запрещен</h3></center>

Статистика

Статистика группы, равна сумме статистик всех потоков + те, для которых не нашлось подходящего потока и они были отправлены в замыкающий аут группы.
Если в Iframe показывать прокладку, TDS посчитает количество ее показов, узнать реальное количество переходов на ПП не будет возможности.
При отборе мобильного WAP трафика с помощью «JS selection», «Iframe selection» или «JavaScript» на графике не будет видна линия «Хиты».
Это связано с тем что хиты равны количеству мобильных (WAP), линия «Хиты» будет спрятана под линией «WAP».

Ротатор рекламы

В корень сайта кладем файл api.php из папки «application».
В файле api.php меняем ID группы, домен TDS и API ключ (он должен быть таким же как в config.php).
Прописываем в самом верху шаблона код

<?php include $_SERVER['DOCUMENT_ROOT'].'/api.php'; ?>
Создаем группу с типом редиректа «Stop».
Создаем первый поток с типом редиректа «Show out», в поле «Страны» вписываем «ru», в поле «Аут» вписываем рекламный код для пользователей из России.
Создаем второй поток с типом редиректа «Show out», в поле «Страны» вписываем «ua», в поле «Аут» вписываем рекламный код для пользователей из Украины.

Создаем последний поток с типом редиректа «Show out», поле «Страны» оставляем пустым, в поле «Аут» вписываем рекламный код для пользователей из остальных стран.
Точно также можно фильтровать по городам, языкам и другим параметрам.
На сайте, в том месте где нужно показать рекламный блок, размещаем код

<?php if(!empty($z_out)){echo $z_out;} ?>
Что бы указать несколько кодов, используйте разделитель «|||».
Работоспособность ротатора проверялась с bodyclick.net, marketgid.com, runetki.com, яндекс директ, адсенс.

Обсуждение на форумах
http://searchengines.guru
http://bablorub.ru

Хостинг для zTDS
Промо-код: ztds
Скидка 25%

Скачать zTDS

ChangeLog