суббота, июля 07, 2007

Google Adsense - Ориентация на разделы

В последнее время начал эксперементировать с Google Adsense - и оказалось что есть вещь аналогичная тегам у бегуна - возможность выделения части контента для указания более релевантной части текста на странице. Как ни странно, это не очень афишируется и есть определенные ограничения, по-видимому связанные с тем, что эти возможности могут широко использовать спамеры.

Подробно: https://www.google.com/adsense/support/bin/answer.py?answer=23168&ctx=ru:search&query=AdSense+Section+Targeting&topic=&type=f

Примеры использования:
HTML-теги, предназначенные для подчеркивания важности раздела страницы, имеют следующий формат:
<!-- google_ad_section_start -->

<!-- google_ad_section_end -->

Добавив в начальный тег выражение (weight=ignore), можно указать те разделы, которые Вы хотели бы проигнорировать.
<!-- google_ad_section_start(weight=ignore) -->

Там же предупреждают - что таким образом нельзя выделить, например, заголовок раздела - и нужно включать только большие объёмы контента. Малые объёмы заключённые в такие теги могут быть расценены как нарушение программы. Нужно будет попробовать, по крайней мере будет полезно исключать некоторые блоки которые могут уменьшать релевантность (например комментарии).

Хорошо расписано в Блогера из Алтая тут: http://bobrdobr.blogspot.com/2007/07/google-adsense-section-targeting.html

07.07.07

Сегодня кстати выходит новый альбом возрождённой Smashing Pumpkins

пятница, июля 06, 2007

Отслеживание Adsense кликов через Analytics

1. Скачать скрипт - astrack.js
2. Зайти в Google Analytics и настраить цель для нужного сайта. URL - /asclick и любое название, например “Adclick”. Сам урл существовать не должен, это дело возьмет на себе джаваскрипт.
3. Закачать astrack.js на сервер и вставить код - <script src="/astrack.js" type="text/javascript"></script> в футер сайта.

Подробней тут: http://stwinnie.com/tracking-adsense-clicks-using-google-analytics/.
Пошёл пробовать.

Безопасный Серфинг без VPN, через SSH

Нашёл сегодня жутко полезную программу MyEntunnel - которая позволяет серфить безопасно без VPN - через любой SSH аккаунт на сервере. Как то раньше пытался установить и настроить VPN на своём сервере, но не получилось. С помощью MyEntunnel - я настроил подключение за одну минуту. Нужно только ввести настройки ssh доступа. Причём она не шифрует весь трафик, как например VPN - а позволяет подключаться через зашифрованный канал для отдельных приложений, каких захотим - для этого нужно настроить, чтобы доступ приложения к сети осуществлялся через локальный SOCKS5 прокси (localhost:7070 по умолчанию). Очень удобно.



Также имея несколько серверов / SSH - аккаунтов - поменять свой ip адрес оказывается буквально минутным делом. SSH сила =)

Подробно тут: http://with.in/bezopasnyj-syorfing-kak-obojtis-bez-vpn/
Сама программа называется MyEntunnel, скачать можно здесь: http://nemesis2.qx.net/software-myentunnel.php

четверг, июля 05, 2007

Исследования контекстной рекламы в Рунете от Яндекса

Наткнулся на интересный документ - Исследование контекстной рекламы в Рунете на Яндексе. (Новость, Полный текст исследования).

Самое главное - пишут что рынок контекстной рекламы постоянно увеличивается, (в четверо за 2006 год), что неудивительно - и давно обогнал рынок баннерной рекламы. Хитро намекают, что якобы именно они придумали контекстную рекламу (В 2001 - появился Директ, а Гугл Адсенс и Бегун только в 2002). Незнаю так это или нет.

Интересно: 43 % всех кликов в Рунете проиходит в Москве. Там же и самая высокая средняя стоимость клика - в 2-2.5 раза больше. Получается что Москва приносит больше 70 % всех доходов! Сразу вспомнился анекдот, что за МКАД'ом в России жизни нет. Также, если верить документу - больше 50 % всего рынка принадлежит Яндексу - странно, вроде визуально сайтов с Директом не так много.

среда, июля 04, 2007

пятница, июня 29, 2007

Море шепчет...

Как минимум раз в год нужно всё и всех отправлять нафиг и ехать куда-нибудь отдыхать. Пару дней назад приехал с женой с Болгарии. Золотые пески. Там хорошая погода, море народу, свежий воздух и чистое море. Море отлично промывает мозги, а свободное время позволяет отделить приоритеты от рутины, и понять, чем нужно заниматься дальше.



На пляже всё дорого, но шмотки дешёвые. Отель отличный. Всё включено. За две недели всё обошлось почти в 2 тысячи евро. На куроте больше всего немцев, потом англичан. Русских тоже хватает, но не то что бы очень много. Не понравились болгары. Все так и норовят наипать. Даже в макдональдсе. И почти каждом обменнике. Суки. Зажрались.

Всем кто собирается в болгарию - советую почитать отзывы о отелях в интернете. Некоторые отели с одинаковым количеством звёзд, отличаются друг от друга, как светлое небо и грешная земля.

Гугл знает всё =)

1 Удав = 38 Попугаев

среда, июня 06, 2007

Как я посадил аккумулятор в машине =)

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

Пришлось искать таксиста и запитываться от него, чтобы завестить и уехать =)

Fallout3

Ёпт, вышел первый трейлер FallOut3!



Всем смотреть. Fallout3 выходит осенью 2008.

вторник, мая 29, 2007

Маскируем скрипт - прикидываемся браузером

В PHP есть супермощный класс CURL - который позволяет полностью эмулировать соединения с различными параметрами. С помощью небольшого тюнинга можно добиться, что наш скрипт будет неотличим от браузера управляемым человеком.

Зачем это нужно? Опыт показывает, что, например, поисковые системы - скрипту эмулирующему браузер перекрывают кислород намного позже.

Чем браузер отличается от скрипта? Он передаёт строку юзер-агента, сохраняет и отдаёт куки, передаёт сточку реферера (адрес страницы откуда пришли) - мы будем делать то же самое.

Простейший способ использования CURL:

$url = "http://www.site.com";
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$str = curl_exec($ch);

curl_close($ch);


Текст страницы оказывается в переменной $str - с ним потом можно делать всё что угодно.

Теперь тюнингуем наш простейший скрипт.

1. Добавляем сточку юзер-агента

$user_agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)";
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);


Строчку юзер-агента можно вставить любого популярного браузера. Это - для Microsoft Outlook 6.0. Также браузер часто передаёт версию ОС и некоторые параметры - например тут версию .NET.

2. Если вызываем несколько страниц на сайте, сохраняем и отдаём куки


$cookie_file = " ..тут вставляем путь к файлу ..";
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);


Многие сервисы "отсеивают" скрипты - устанавливая, а затем запрашивая переменную в куки. Путь к куки файлу должен быть полный. При запуске скрипта - желательно удалить файл куки, оставшийся от предыдущей работы скрипта. Также для файла сохраняющего куки, или для папки куда он сохраняется - должны стоять права на запись.

3. Передаём реферера.

Реферер - это адрес страницы, указывающий откуда пришёл пользователь, т.е. адрес страницы на которой была ссылка или форма, действие которой привело на текущую страницу.

curl_setopt($ch, CURLOPT_REFERER, "http://site.com");

Для чего это нужно? Некоторые сервисы могут его проверять и делать определённые выводы. Например, для парсинга страниц результатов поиска Google - можно установить реферер http://google.com - т.е. мы показываем наш эмулятор браузера - "пришёл" на страницу с результатами поиска с главной страницы.

4. Делаем небольшую паузу между запросами

Юзер не кликает страницы друг за другом, а просматривает их через определённое время, поэтому, в случае, если запрашиваем много страниц циклом - нужно обязательно вставить небольшую паузу.

sleep(5);

Также можно сделать случайную паузу, например от 2 до 10 секунд.

sleep( rand(2,10) );

5. Использование прокси

Чтобы совсем замаскировать следы - можно использовать прокси.

curl_setopt($ch, CURLOPT_PROXY, "111.222.333.444:5555");

Нужно удалять файл куки перед сменой прокси.


Инструкции для эмуляции браузера с использованием CURL получаются следующие:

$url = "http://www.site.com";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$user_agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)";
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

$cookie_file = " ..тут вставляем путь к файлу ..";
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);

curl_setopt($ch, CURLOPT_REFERER, "http://site.com");
curl_setopt($ch, CURLOPT_PROXY, "111.222.333.444:5555"); //Прокси - если необходимо

$str = curl_exec($ch);
curl_close($ch);

...

sleep( rand(2,10) );

Как Обхитрить Гугл

Я вчера писал, что у меня возникли проблемы с использованием сервиса Google Translate. Я просто стал слишком много его использовать, ему это не понравилось. Как быть? Проект должен работать, проблему нужно решать быстро.

Решений такой проблемы может несколько. Самое первое, что приходит на ум - это использовать прокси. Но для этого нужно писать сборщик прокси, который ещё будет их ещё чекать (хоть такой скрипт у меня уже давно есть). Я решил сделать проще. Для этого воспользуемся знаниями о том, как устроен гугл. Гугл - это множество датацентров в разных частях света, в зависимости от того, где мы находимся, гугл эффективно манипулирует DNS - и мы получаем доступ к ближайшему или быстрейшему. Датацентры - это система в себе, которая содержит полностью поисковый кэш и все сервисы гугла.

Нам ничего не мешает обращаться к разным датацентрам. Для этого возьмём список датацентов, в каком-нибудь сервисе, которые показывают pr на разных датацентрах. (Например: http://digpagerank.com/). Вместо обращения к google.com - будем обращаться к случайному ip датацентра.

Получается вот такая PHP функция:

function RusEnTranslate($text) {

$text = iconv("windows-1251", "UTF-8", $text);

$ips = array("59.151.21.100", "64.233.161.18", "64.233.161.81", "64.233.161.84");
shuffle( $ips );

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://".$ips[0]."/translate_t");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'hl=en&ie=UTF8&amp;langpair=ru|en&text='.$text.'&submit=Translate');
$str = curl_exec($ch);
curl_close($ch);

preg_match('/<div id="result_box" dir="ltr">([^<]*)<\/div>/isU', $str, $matches); return $matches[0]; } //func

Массив $ips - может содержать любое количество ip адресов датацентров. Аналогичный механизм можно использовать для парсинга поисковых результатов гугла.

Следующий пост напишу о том, как скрипту прикинуться пользователем и максимально эмулировать действия браузера управляемого человеком.