X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
> Пишем спамилку за 5 минут
Jeck
Jeck
Topic Starter сообщение 19.11.2008, 0:19; Ответить: Jeck
Сообщение #1


Участник
***

Группа: User
Сообщений: 192
Регистрация: 24.1.2008
Поблагодарили: 42 раза
Репутация:   39  


Для начала моральная отмазка:
В последние время участились нападки в сторону так называемых "спамеров блогов/форумов". Судя по всему орут — криворукие чайники, которые и думать не думали что их любимый бложек может оказаться под ударом всякой нечисти, вроде темных оптимизаторов. Так вот специально для таких чайников (честное слово только для них) я покажу как за пять минут можно написать php скрипт спамилку для блогов на WP.

И так преступим. Для начала нам понадобиться какая то хреновина для эмуляции браузера, для этого мы возьмем мою обвертку curl — http://jeck.ru/tools/http.class.html (работает только на php5 учтите это).

Краткая документация.
$http = new http; // создать экземпляр класса.
$page = $http->GET('http://example.com'); // получить страницу http://example.com в переменную $page
$page = $http->POST('http://example.com',$postdata); // Получить результат POST запроса на http://example.com в переменную $page в $postdata - параметры запроса (как их узнать - дальше)
$url = http::fixURL('http://example.com','./action.php'); // Преобразовывает относительные URL`ы в абсолютные (первый параметр - базовый URL, второй - относительный путь)


Пока что этого хватит. Идем дальше, теперь нам надо узнать какие поля надо отправить в POST запросе что бы получился комментарий. Можно конечно открыть код страницы найти там тег <form> и дальше заниматься ручным парсингом HTML. А можно просто воспользоваться моим сервисом (http://jeck.ru/tools/FormsParser/) вставить туда какой нибудь стандартный блог (например http://www.houselux.com/?p=1) и получить массив полей.

$postdata['author'] = '';
$postdata['email'] = '';
$postdata['url'] = '';
$postdata['submit'] = 'Отправить';
$postdata['comment_post_ID'] = '1';
$postdata['comment'] = '';


И тут то нас ждет небольшой облом. В форме присутствует динамическое поле которое равно ID записи. Конечно можно палить наугад скажем с ID=1 как здесь, но я думаю URL из списка для спама будут вести на конкретные, существующие записи и зря терять информацию не следует. Так что давайте как раз этим и займемся, а заодно напишем общий каркас приложения.

CODE

<?
// Зачем прерываться — убираем таймаут на выполнение
set_time_limit(0);
// Подключаем http класс
include 'http.class.php';

// Этой строкой мы загружаем URL`ы из файла urls.txt и обрезаем символы перевода строк
$urls = array_map('rtrim',file('./urls.txt'));

foreach ($urls as $url) {
// создаем новый экземпляр http класса
$http = new http;
// Получаем страницу с формой
$page = $http->GET($url);
// Проверяем есть ли на странице ID поста
if (preg_match('#name="comment_post_ID" value="([0-9]+)"#i',$page,$match)) {
$post_id = $match[1];
// Если все нормально и ID присутствует формируем URL action формы
$action = http::fixURL($url,'/wp-comments-post.php');
// Тут мы будем спамить $url
}

unset($http);
}

?>


И так сейчас у нас уже есть скрипт который бегает по списку URL`ов из urls.txt и дергает с каждого из них ID поста. Теперь осталось как говориться добавить не много магии — вставляем наши поля, заполняем своими данными и отправляем POST запрос.

CODE

<?
// Зачем прерываться — убираем таймаут на выполнение
set_time_limit(0);
// Подключаем http класс
include 'http.class.php';

// Этой строкой мы загружаем URL`ы из файла urls.txt и обрезаем символы перевода строк
$urls = array_map('rtrim',file('./urls.txt'));

foreach ($urls as $url) {
// создаем новый экземпляр http класса
$http = new http;
// Получаем страницу с формой
$page = $http->GET($url);
// Проверяем есть ли на странице ID поста
if (preg_match('#name="comment_post_ID" value="([0-9]+)"#i',$page,$match)) {
$post_id = $match[1];
// Если все нормально и ID присутствует формируем URL action формы
$action = http::fixURL($url,'/wp-comments-post.php');

// Заполняем поля своей информацией
$postdata['author'] = 'BigFatSpamer';
$postdata['email'] = 'bigfatspamer@spam.com';
$postdata['url'] = 'http://fatspamers.com';
$postdata['submit'] = 'Отправить';
$postdata['comment_post_ID'] = $post_id;
$postdata['comment'] = 'The matrix has you...';

// И отправляем запрос
$http->POST($action,$postdata);
}

unset($http);
}

?>


Ну вот кто после этого может обвинять спамеров в чем то? Это все равно что обвинять человека нашедшего под своей дверью кошелек с деньгами в краже.

P. S. Всем мега гениям — я знаю что это очень простой/не универсальный, но не стану же я тут что то серьёзное постить просто так.
P. S. S. Кто посмеет растащить данный текст без ссылки на Jeck.ru — заспамлю нафиг.


--------------------
Jeck.ru


Поблагодарили: (3)
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
centurion
centurion
сообщение 19.11.2008, 1:13; Ответить: centurion
Сообщение #2


Топовый постер
*******


Группа: Active User
Сообщений: 2831
Регистрация: 10.12.2007
Из: aceweb
Поблагодарили: 1349 раз
Репутация:   308  


Хммм... Какой умный smile.gif
Я от этого далек blink.gif
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Jeck
Jeck
Topic Starter сообщение 19.11.2008, 1:26; Ответить: Jeck
Сообщение #3


Участник
***

Группа: User
Сообщений: 192
Регистрация: 24.1.2008
Поблагодарили: 42 раза
Репутация:   39  


>Хммм... Какой умный

А то biggrin.gif в следующий раз пожалуй напишу как расшифровать простенькую каптчу.


--------------------
Jeck.ru
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Nisan
Nisan
сообщение 19.11.2008, 1:46; Ответить: Nisan
Сообщение #4


Новичок
*

Группа: User
Сообщений: 38
Регистрация: 26.9.2008
Поблагодарили: 6 раз
Репутация:   2  


(Jeck @ 19.11.2008, 0:26) *
>Хммм... Какой умный

А то biggrin.gif в следующий раз пожалуй напишу как расшифровать простенькую каптчу.


Оо! )) Всегда было интересно как они распознаются! rolleyes.gif


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
inquis
inquis
сообщение 19.11.2008, 1:59; Ответить: inquis
Сообщение #5


Участник
***

Группа: User
Сообщений: 132
Регистрация: 14.7.2008
Поблагодарили: 25 раз
Репутация:   2  


(Nisan @ 18.11.2008, 23:46) *
Оо! )) Всегда было интересно как они распознаются! rolleyes.gif

_http://www.xakep.ru/post/41033/default.asp?page=2
Пример муторный, но рабочий))


--------------------


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
UncleM
UncleM
сообщение 19.11.2008, 2:16; Ответить: UncleM
Сообщение #6


Бывалый
****

Группа: Banned
Сообщений: 436
Регистрация: 17.8.2008
Поблагодарили: 157 раз
Репутация:   37  


(Jeck @ 18.11.2008, 16:49) *
В последние время участились нападки в сторону так называемых "спамеров блогов/форумов". Судя по всему орут — криворукие чайники, которые и думать не думали что их любимый бложек может оказаться под ударом всякой нечисти, вроде темных оптимизаторов. Так вот специально для таких чайников (честное слово только для них) я покажу как за пять минут можно написать php скрипт спамилку для блогов на WP.

Это отмазка для чайников, тема из серии "смотри как я умею" biggrin.gif

И какая от этого польза оптимизатору? Если учесть, что это СЕО форум, то для большинства это просто иероглифы, но как их использовать вы объяснили и внесли свою лепту в развитие спама. wink.gif


--------------------
Осторожно! Вы можете получить огромный заряд позитива!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Lordie
Lordie
сообщение 19.11.2008, 4:18; Ответить: Lordie
Сообщение #7


Топовый постер
*******


Группа: Active User
Сообщений: 4737
Регистрация: 11.5.2008
Поблагодарили: 966 раз
Репутация:   153  


inquis, глянул один проф.ресурс, посвященный этим распознаваниям капч... порадовало, что написанную мной на коленке за полчаса причисляют к разряду среднезащищенных от автораспознавания)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
youlkin
youlkin
сообщение 19.11.2008, 5:42; Ответить: youlkin
Сообщение #8


Участник
***

Группа: User
Сообщений: 226
Регистрация: 26.7.2008
Из: Клингонская Империя
Поблагодарили: 52 раза
Репутация:   10  


(UncleM @ 19.11.2008, 2:16) *
Это отмазка для чайников, тема из серии "смотри как я умею" biggrin.gif

И какая от этого польза оптимизатору? Если учесть, что это СЕО форум, то для большинства это просто иероглифы, но как их использовать вы объяснили и внесли свою лепту в развитие спама. wink.gif


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

p.s. спам плох только для тех, кто не умеет, не хочет, ленится с ним бороться.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
UncleM
UncleM
сообщение 19.11.2008, 6:32; Ответить: UncleM
Сообщение #9


Бывалый
****

Группа: Banned
Сообщений: 436
Регистрация: 17.8.2008
Поблагодарили: 157 раз
Репутация:   37  


Для тех кто хочет бороться с такими скриптами, просто добавьте еще одно поле, которое обязательно для заполнения.
Например, ответ на вопрос "Ты хто? Бот шо ли? Да или нет?".
У меня после такого простого шага отсеялись практически все спамеры-боты.


--------------------
Осторожно! Вы можете получить огромный заряд позитива!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Jeck
Jeck
Topic Starter сообщение 19.11.2008, 13:16; Ответить: Jeck
Сообщение #10


Участник
***

Группа: User
Сообщений: 192
Регистрация: 24.1.2008
Поблагодарили: 42 раза
Репутация:   39  


UncleM, я тут не опубликовал класс парсера форм, но это не значит что его нет. Смотри как легко обходится защита с доп полем.
...
        $http = new http;
        $parser = new FormParser;
        $page = $http->GET($url);
        $parser->parseForms($page);
        $postdata = $parser->getPostdata(array("comment_post_ID","comment"));
        if ($postdata != false) {
            $action = http::fixURL($http->current_url,$parser->action);
            $postdata = array_merge($postdata,$data);
            $http->POST($action,$postdata);
        }
...


--------------------
Jeck.ru
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Как за 5 минут превратить статью в видео.
29 MissContent 6181 25.11.2017, 21:17
автор: harold_may
Открытая тема (нет новых ответов) Создать сайт с фильмами бесплатно за 10 минут
6 KurtRassel 799 4.11.2017, 18:37
автор: KurtRassel
Открытая тема (нет новых ответов) Несложная работа на 10 минут - копипаст
Размещение готовых отзывов
3 tube 849 30.1.2017, 17:39
автор: PureCorp
Горячая тема (нет новых ответов) Пишем и размещаем новости\обзоры\статьи. СМИ сайт, ТИЦ 200, ПР 2, возраст 3+ года
Под каждый заказ пишется новая статья. Индексация в течении 10-ти мину
102 koroluk1990 26596 10.10.2014, 23:10
автор: traveliver
Открытая тема (нет новых ответов) Уникальный контент в ЛЮБЫХ ОБЪЕМАХ - пишем на ЛЮБЫЕ ТЕМАТИКИ, быстро и качественно!
от 30р за 1000 знаков и до 100 статей в сутки!
2 Antonium 1147 10.1.2014, 17:23
автор: Antonium


 



RSS Текстовая версия Сейчас: 16.12.2017, 21:25
Дизайн