уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

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

Может кто-то и покупает подобный софт за *дцать зеленых енотов, но мне, как любителю программировать что-либо (не обязательно для кого-то), узнать что-то новое из области программирования, как-то жалко тратить деньги на то, что вполне можно собрать самому и при этом бесплатно.  Вот и решил я сегодня поделиться с Вами информацией по поводу того как могут работать программы подобного рода. Сразу оговорюсь, что предоставляемая информация не может охватить всех возможных способов авторизации и автоматического постинга, т.к. практически к каждому сервису придётся подходить индивидуально. Более того, то, что я сегодня буду рассказывать я делаю исключительно для своих нужд и продавать ничего не собираюсь — берите бесплатно то что есть и как есть. Рассмотрим сегодня два случая:

  1. Отправка данных в социальную сеть без регистрации
  2. Отправка данных в сервис социальных закладок с предварительной авторизацией на сайте.


Инструментарий, которым я пользовался при написании этой статьи довольно прост:

  1. Lazarus (можно использовать и Delphi)
  2. Библиотека Synapse для работы с запросами GET, POST
  3. Плагин к FireFox Live Headers для просмотра HTTP-заголовков

и никаких WebBrowser’ов, Indy, OLE-объектов и пр.

1. Отправка данных в социальную сеть без регистрации.

Социальные сети, которые не требуют предварительной регистрации аккаунта — редкость для Рунета. Но тем не менее встречаются. Социальная сеть в том понятии, в котором она применяется в данном посте — это не то место где копирайтеры свое мастерство в написании и переписывании статей и не ВКонтакте. Соц.сеть сегодгя для нас — это сайт на котором нам самим выгодно и необходимо разместить бесплатный анонс своего поста в блоге.

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

Про Captcha в виде картинок, генерируемых php или js-скриптами я уже говорил по-моему достаточно, поэтому сегодня рассмотрим вопрос о том как работать с каптчей вот такого вида:

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

Итак, берем подопытную социальную сеть (назовем её — сеть X), и начинаем анализировать.

1.1. Работа с Captcha в виде чекбокса

Первое, что сразу хочется сделать — это заглянуть в HTML-код страницы. Открываем исходник странички и ищем элемент формы, который отвечает за каптчу, т.е. чекбокс. В моем случае HTML-код выглядит вот так (картинка кликабельна):

Из приведенного отрывка исходника странички можно сделать вывод, что при клике по чекбоксу срабатывает некая функция sp_captcha_change(), которая по логике вещей должна менять код каптчи для отправки на сервер. Ищем как выглядит функция:

Как видите, у функции нет никаких генераторов случайных чисел и пр. только присвоение элементу какого либо значения в зависимости от состояния чекбокса. Следовательно, сделать что-либо подобное как с каптчей в Яндекс.Файлах нам не получится. Будем анализировать HTTP-заголовки.
Для чистоты эксперимента необходимо удалить все куки, относящиеся к исследуемому сайту. Чистим, запускаем Live Headers и обновляем исследуемую страничку. Заголовок ответа сервера у меня получился вот таким:

Смотрим, что твориться в исходнике в части скрипта:

Как видите, никакого кода нет. А быть долежен. Но зато при первом запросе страницы нам сервер установил куку и, видимо это неспроста :) Обновляем страницу ещё раз (без очистки Cookies) и видим:

При наличии куки код генерируется при каждом обновлении страницы. Следовательно, напрашивается вполне, на мой взгляд, простой вывод: для того, чтобы получить код каптчи необходимо:
1. Запросить страницу и сохранить полученные куки
2. Найти в коде страницы скрипт и вытащить оттуда код. Для этого можно воспользоваться, например, регулярными выражениями.
Попробуем реализовать всё вышесказанное на примере. Открываем Lazarus/Delphi и начинаем программировать. Итак, для отправки и получения данных по HTTP-протоколу в Synapse есть объект THTTPSend в модуле httpsend. Подключаем модуль и пишем функцию получения кода Captcha. Часть функции, отвечающая за получение HTTP-кода с каптчей выглядит следующим образом:

[...]
HTTPSend:=THTTPSend.Create;
HTTPSend.KeepAlive:=true;
HTTPSend.KeepAliveTimeout:=300;
HTTPSend.TargetHost:='host.domain';
HTTPSend.TargetPort:='80';
HTTPSend.Protocol:='1.1';
HTTPSend.HTTPMethod('get','http://адрес.страницы');//после этого действия получим куку
HTTPSend.Headers.Clear;//чистим заголовки
HTTPSend.HTTPMethod('get','http://адрес.страницы');//теперь скрипт должен содержать код каптчи
[...]

Исходный код страницы содержится в потоке TMemoryStream, прочитать который можно, обратившись к свойству HTTPSend.Document.
Если Вы хотите удостовериться в том, что необходимые кукисы установлены, то можете обратиться к свойству HTTPSend.Cookies. Все Cookies сохраняются автоматически.
Теперь, когда у нас есть документ, можно смело искать код каптчи. Так как я сейчас работаю в Lazarus под Ubuntu, то, соответственно, не имею доступа к TRegEx, на зато могу воспользоваться «родным» модулем Лазаря RegExpr для работы с регулярными выражениями. Модуль сам по себе довольно мелковат для более менее серьёзного парсинга, но для решения нашей задачи его вполне хватит. Часть кода для чтения Captcha у меня выглядит вот так:

[...]
var RegExpr: TRegExprEngine;
RegText: string;
index,len:integer;
begin
RegText:='document.getElementById(.*).value = (.{9,})';
if GenerateRegExprEngine(PChar(RegText),[ref_caseinsensitive,ref_multiline],RegExpr) then
  begin
    RegExprPos(RegExpr,PChar(cText.DataString),index,len);
    RegText:=copy(cText.DataString,index,len);
    Result:=copy(RegText,length(RegText)-9,9);
  end
else
  Result:='';
[...]

Если Вы используете Delphi, то советую воспользоваться объектов TRegEx — код получиться более красивым и будет возможность получить сразу необходимый результат через объект Matches без использования всяких copy.
Итак, первая часть работы выполнена — у нас есть код Captcha для отправки на сервер. Переходим ко второй части — отправки анонса в социальную сеть.

1.2. Постим сообщение в соц.сеть

Если Вы достаточно хорошо знакомы с работой методов GET и POST, то в отправки сообщения у Вас сложностей возникнуть не должно. Однако для порядка, приведу пример.
Работать будем теперь только с заголовками. Заполняем все необходимые поля на странице, жмем кнопку отпраки сообщения и анализируем заголовок у POST. Я не буду приводить и расписывать его содержимое целиком (нам это сегодня не важно), а ограничусь только основными элементами:

[...]
Cookie: PHPSESSID=fa1b473c2c232549c52dc181d28a30cf
Content-Type: application/x-www-form-urlencoded
Content-Length: 145
[...]

При этом контент отправляемого документа выглядит следующим образом:

url=[адрес страницы с анонсом]
&title=[заголовок страницы]
&content=[описание анонса]
&addcats[]=1 {номер категории в которую необходимо поместить анонс}
&name=[имя автора]
&email=[почта автора]
&site=[сайт автора]
&sp2-captcha_sess=[код каптчи]
&submit=Добавить
&post_id=secret

Всё, что нам остаётся — это сформировать правильный документ и отправить его на сервер методом POST. Используя Synapse это можно сделать например вот так:

[...]
Data:=TStringStream.Create('');
Data.WriteString('url='+Edit1.Text+'&');
Data.WriteString('title='+Edit2.Text+'&');
Data.WriteString('content='+Memo1.Text+'&');
Data.WriteString('addcats[]={новер категории}&');
Data.WriteString('name='+Edit3.Text+'&');
Data.WriteString('email='+Edit4.Text+'&');
Data.WriteString('site='+Edit5.Text+'&');
Data.WriteString('sp2-captcha_sess='+{код Captcha});
Data.WriteString('&submit=Добавить&');
Data.WriteString('post_id=secret');
 
HTTPSend.MimeType:='application/x-www-form-urlencoded';
if HTTPSend.HTTPMethod('post','http://адрес.страницы') then
  begin
    //анализируем ответ, выводим сообщение и т.д.
  end
[...]

Если запрос отправлен успешно, то это не говорит Вам о том, что новость была опубликована, поэтому дополнительно необходимо проанализировать заголовки ответа сервера. В зависимости от того как устроена обработка формы Вам вернется ответ, который может сказать о результате операции. Например, в моем случае об успешной отправке анонса говорит заголовок с кодом 302 с редиректом на страницу анонса, а при неудачной отправке — код 200. Как будет выглядеть проверка у Вас скажет анализ заголовков.
В целом, задачу отправки анонса в социальную сеть можно считать решенной. Если у Вас остались какие-либо вопросы — задавайте. А пока переходим к следующему вопросу.

Отправка данных в сервис социальных закладок с предварительной авторизацией на сайте.

В данном случае работа с сервисом с одной стороны упрощается, т.к. обчно достаточно авторизоваться без ввода Captcha, а с другой стороны, дополнительно необходимо удостовериться в том, что сайт нас всё-таки запустил к себе и мы отправляем данные не в пустоту.
Примеров сервисов социальных закладок в Рунете море — это и toodoo.ru, и МоёМесто и БобрДобр и пр. Каждый из сервисов имеет свой уникальный дизайн, равно как и своё описание элементов форм, поэтому, повторюсь ещё раз — подход в каждом отдельном случае индивидуальный, но алгоритм практически один и тот же. А заключается он (алгоритм) в следующем:
1. Отправляем данные авторизации на сайт
2. Анализируем HTTP-заголовок ответа сервера
3. Если анализ заголовка показывает, что авторизация прошла успешно, то формируем документ с анонсом и отправляем новый запрос на сервер
4. Анализируем HTTP-заголовок ответа сервера, чтобы убедиться, что анонс опубликован
5. Сообщаем результаты пользователю.
По-моему алгоритм прост как три копейки. Попробуем реализовать его на примере. В качестве примера я выбрал сервис toodoo.ru. Во-первых, потому что сам частенько заглядываю туда и читаю, интересующие меня новости. Во-вторых, часто отправляю туда новые ссылки (не только анонсов своего блога). Начнем.

2.1. Авторизуемся на сайте

Вход на сайт осуществляется со страницы http://toodoo.ru/account/signup. С неё и начнем. Заносим в форму свои регистрационные данные, жмем кнопку отправки и анализируем запросы. Вначале анализируем, что и, главное, куда мы собственно отправляем:

Как видите, несмотря на то, что данные заполнялись на странице signup, запрос отправляется на адрес http://toodoo.ru/account/login. Данные формы в теле отправляемого документа выглядят следующим образом:

email=[адрес эл.почты]
&email_confirm=[адрес эл.почты]
&password=[пароль]
&x=41
&y=22

Последние два параметра можно не отправлять, т.к. роли они никакой особо не играют — авторизация пройдет и без них. Теперь смотрим, что возвращает нам сервер при успешной авторизации:

То есть, при успешной авторизации нас перенаправляют на персональную страницу, предварительно навтыкав нам гору кукисов. Если просматривать заголовки дальше, то можно увидеть, что после успешной авторизации нас бросает сначала на персональную страницу, а потом обратно на главную, но на главной мы уже видим ссылки для управления аккаунтом. Но нас это сильно интересовать не должно, главное — мы знаем как определить, что мы авторизованы — по полю Location в Headers.
Если же авторизация не проходит, то нас оставляют на странице авторизации.
Двигаемся дальше. Проверяем отправку нового сообщения (ссылки) в журнал. Тело документа будет выглядеть следующим образом:

dig_url=[адрес ссылки]
&dig_title=[заголовок]
&comment=[комментарий к ссылке]
&where=friends
&submit.x=38
&submit.y=26

Используя объект THTTPSend отправку ссылки в сервис можно осуществить например так (без проверок операции авторизации и отправки):

var Data: TStringStream;
HTTPSend: THTTPSend;
begin
HTTPSend:=THTTPSend.Create;
HTTPSend.KeepAlive:=true;
HTTPSend.KeepAliveTimeout:=300;
HTTPSend.TargetHost:='toodoo.ru';
HTTPSend.TargetPort:='80';
HTTPSend.Protocol:='1.1';
HTTPSend.MimeType:='application/x-www-form-urlencoded';
Data:=TStringStream.Create('');
Data.WriteString('email='+{адрес почты});
Data.WriteString('&email_confirm='+{адрес почты});
Data.WriteString('&password='+{пароль}');
//авторизуемся на сайте
HTTPSend.Document.LoadFromStream(Data);
HTTPSend.HTTPMethod('post','http://toodoo.ru/account/login');
{тут необходимо проанализировать ответ сервера}
[...]
//очищаем заголовки и тело документа
HTTPSend.Document.Clear;
HTTPSend.Headers.Clear;
{отправляем данные ссылки на сервер}
HTTPSend.MimeType:='application/x-www-form-urlencoded';
Data.Free;
Data:=TStringStream.Create('');
Data.WriteString('dig_url='+Edit1.Text);
Data.WriteString('&dig_title='+Edit2.Text);
Data.WriteString('&comment='+Memo1.Text);
Data.WriteString('&where=friends');
Data.WriteString('&submit.x=63');
Data.WriteString('&submit.y=13');
//отправляем данные на сервер
HTTPSend.Document.LoadFromStream(Data);
HTTPSend.HTTPMethod('post','http://toodoo.ru/digest/discuss');
{анализируем ответ сервера}

Вот пожалуй и вся работа по отправке анонсов в соц.сети и закладки. По-моему ничего сверхсложного нет. Главное провести анализ HTTP-заголовков и правильно сформировать запрос.

Кстати, в заключение, хотел бы немного сказать про библиотеку Synapse. Сегодня я её использовал впервые в своей работе и надо сказать библиотека отличная. Не требуется лишний раз задумываться над куками и, как в Indy, использовать отдельный компонент, куки автоматом сохраняются в списке откуда их всегда можно вытащить. Сама работа с библиотекой также проста. При работе с теми же HTTP-запросами я использовал метод объекта THTTPSend, а вообще в модуле есть достаточно удобные функции:

function HttpGetText(const URL: string; const Response: TStrings): Boolean;
function HttpGetBinary(const URL: string; const Response: TStream): Boolean;
function HttpPostBinary(const URL: string; const Data: TStream): Boolean;
function HttpPostURL(const URL, URLData: string; const Data: TStream): Boolean;
function HttpPostFile(const URL, FieldName, FileName: string;  const Data: TStream; const ResultData: TStrings): Boolean;

По-моему, функции достаточно «говорящие», чтобы расписывать их назначение, тем более, что в модуле дается их описание. Например, можно было бы при отправке данных на сервер пользоваться функцией HttpPostURL, а для получения содержимого страницы функцией HttpGetText.
Также просто можно работать и с протоколами ftp, ssl, pop3 и т.д. Вобщем, библиотеку пока показывает себя с наилучшей стороны как в быстродействии и удобстве использования так и в отсутсвии глюков в работе.

0 0 голоса
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
31 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
dkdk
dkdk
20/01/2010 04:44

Спасибо за замечательную статью. По Synapse как-то маловато в сети..
Пробую аналогичным образом сделать авторизацию на https://partner.r01.ru/. А именно беру get’ом, получаю кукис, с ним уже делаю post, получаю заветные 302, но без новых кукис (т.е. остаются те же) и без location. Что делать — не знаю. Мучаю в различных вариантах, но ничего не получается. Буду благодарна за любую помощь.

 

[code]
data:=tstringstream.create('');
httpsend:=thttpsend.Create;
httpsend.KeepAlive:=true;
httpsend.TargetHost:='partner.r01.ru';
httpsend.TargetPort:='80';
httpsend.Protocol:='1.1';
httpsend.HTTPMethod('get','https://partner.r01.ru/');
httpsend.Headers.Clear;
httpsend.Document.Clear;
data.Writestring('wizard_domain2=');
data.Writestring('&auid=');
data.Writestring('&htid=');
data.Writestring('&action=1');
data.Writestring('&login=(здесь логин)');
data.Writestring('&passwd=(здесь пароль)');
httpsend.MimeType:='application/x-www-form-urlencoded';
httpsend.Document.LoadFromStream(Data);
if httpsend.HTTPMethod('post','https://partner.r01.ru/?' ) then begin
stmp:=httpsend.Headers.GetText;
end [/code]
 

manufaktura
manufaktura
21/02/2013 09:56
Ответить на  dkdk

за пару месяцев,? — вряд-ли. хотя если использовать спец. добавки к питанию то думаю возможно…

Lengvvist
Lengvvist
14/08/2013 03:07
Ответить на  dkdk

Знаю таких. Норм ставят. Я тебе в личку напишу тел.

dkdk
dkdk
20/01/2010 23:16

Все сделала (при https порт автоматически, кстати, меняется же..), EncodeURLElement сделала (он в synacode). Уже во всех возможных вариантах — и со знаком вопроса, и без..
Если не делаю httpsend.headers.clear, то в ответе получаю 400 Bad Request..Хм!
Need your help))
Заранее спасибо)

dkdk
dkdk
21/01/2010 13:13

в том-то и дело, что не прописываю)) странно))  весь код (до проблемного места) приведен..
заранее спасибо))

programmeraxel
programmeraxel
31/03/2010 22:42

здравствуйте уважаемый Vlad. прошу прошения что беспокою но вижу вы разбирающийся в этом вопросе человек. у меня есть такая интересная проблема имеется такой код [code]var Http : TidHttp; CM : TidCookieManager; Data : TStringList; o,c : integer; b,r : string; begin s:TStringStream.Create(''); try Http := TIdHTTP.Create(Self); Data := TStringList.Create; CM := TidCookieManager.Create(Http); Http.AllowCookies := true; Http.CookieManager := CM; Http.HandleRedirects := true; //Секция браузера(не трогаьт оно и так работает отлично) Http.Request.Host:='www.web-ip.ru'; Http.Request.UserAgent:='Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10'; Http.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; Http.Request.AcceptLanguage:='ru,en-us;q=0.7,en;q=0.3'; Http.Request.AcceptEncoding:='gzip,deflate'; Http.Request.Connection:='keep-alive'; Http.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7'; Http.Request.Referer:='http://www.web-ip.ru/index.php'; //секция печенюшек Data.Add('wmid=' + Edit1.Text); Data.Add('pass=' + Edit2.Text); Data.Add('subent=%C2%F5%EE%E4'); StrPage:=Http.Post('http://www.web-ip.ru/'+b, Data); if Pos('sayman',StrPage) 0… Подробнее »

programmeraxel
programmeraxel
02/04/2010 17:09

если вставить код
StrPage:=UTF8ToAnsi(StrPage)
то на выходе мемо пустой становится

компилятор lazarus 0.9.28
indy 10.2.0.3

Михаил Анянов
Михаил Анянов
21/04/2010 10:38

Добрый день, возникла проблема при авторизации на одном сайте, вот пример GET и POST запросов (пароли и логины удалены) через Мазиллу: В запросе GET устанавливаются cookies: GET http://MYHOSTNAME/ HTTP/1.1 Host: MYHOSTNAME User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Proxy-Connection: keep-alive HTTP/1.1 200 OK Date: Wed, 21 Apr 2010 06:54:44 GMT Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET X-AspNet-Version: 1.1.4322 Set-Cookie: ASP.NET_SessionId=1nrjum45vta5gt551pp1e2qn; path=/ Cache-Control: private Content-Type: text/html; charset=utf-8 Content-Length: 11421 Connection: Keep-Alive ———————————————————- В запросе POST отправляются следующие переменные: __VIEWSTATE — значение ее я получаю в первоначально загруженной странице user… Подробнее »

sonmax
sonmax
22/04/2010 16:01

__VIEWSTATE — похоже на сайт МТС. я то же этим занимался.
не вижу такой строки у тебя.
HTTPSend.UserAgent:=’Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6′;
в моем случае проблемы были тут

Михаил Анянов
Михаил Анянов
23/04/2010 06:38

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

Владимир
Владимир
03/06/2011 13:38

Здравствуйте! Помогите, пожалуйста, разобраться. Использую Synapse, для авторизации на сайте. Вроде бы все разжеванно и должно быть легко, но ведь не выходит! (После успешной авторизации должно быть: Location: /login?TlKStvFY, но у меня Location: /mye1/login/key-c6zAhi3W.html — случай, когда авторизация неуспешная)

procedure TForm1.CreateHeaderE1;
begin
HTTPe1.Headers.Clear;
HTTPe1.Headers.Add(‘Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8’);
HTTPe1.Headers.Add(‘Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3’);
HTTPe1.Headers.Add(‘Accept-CharSet: windows-1251,utf-8;q=0.7,*;q=0.7’);
HTTPe1.Headers.Add(‘Accept-Encoding: gzip, deflate’);
HTTPe1.Headers.Add(‘Connection: keep-alive’);
HTTPe1.Headers.Add(‘Referer: http://www.e1.ru/mye1/index.fcgi‘);
end;
procedure TForm1.LoginE1;
var
Stream: TStringStream;
begin
Stream:=TStringStream.Create(»);
Stream.WriteString(‘sub=login&key=&url=&email=MAIL&password=PASS’);
HTTPe1:=THTTPSend.Create;
HTTPe1.MimeType:=’application/x-www-form-urlencoded’;
HTTPe1.UserAgent:=’Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1′;
CreateHeaderE1;
HTTPe1.Document.LoadFromStream(stream);
HTTPe1.HTTPMethod(‘post’,’http://www.e1.ru/mye1/index.fcgi?’);

 
Что я делаю нетак? Может быть картину я не полную обрисовал, пожалуйста, подскажите о чем еще уточнить, в этом случае.

Владимир
Владимир
07/06/2011 19:33

:( я голову сломал изза этого сайта.

Владимир
Владимир
08/06/2011 10:53

Я несколько раз постил заголовки страниц :) но они не публиковались, думал проходят модерацию.
Так вот, когда я пытаюсь программно авторизироваться, меня перекидывает, например, на /mye1/login/key-3bmq2pDS.html (при успешной авторизации должно перекидывать, например, на /login?PRdQKFQm). 
Подозреваю, что перед авторизацией мне не все cookies приходят. Пытался перед отправкой логина и пароля получить эти куки, но картина такая же. Ничего пока что придумать не могу.
Ниже приведу заголовки страниц успешной авторизации.

Владимир
Владимир
08/06/2011 10:55

———————————————————-
http://www.e1.ru/mye1/ (здесь я получаю начальные значения cookies)

GET /mye1/ HTTP/1.1
Host: http://www.e1.ru
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive

HTTP/1.1 200 OK
Server: nginx
Date: Wed, 08 Jun 2011 04:41:22 GMT
Content-Type: text/html; charset=windows-1251
Transfer-Encoding: chunked
Connection: close
Set-Cookie: urbid=Te78wAAAANwDAwUCLJL1efBaTLY=; path=/; expires=Thu, 07-Jun-12 04:38:24 GMT
Cache-Control: no-cache=»set-cookie», max-age=0
Expires: Wed, 08 Jun 2011 04:38:24 GMT
Content-Encoding: gzip
———————————————————-

Владимир
Владимир
08/06/2011 10:55

———————————————————-
http://www.e1.ru/mye1/index.fcgi (здесь уже страница использует в дополнение такие cookies: __utma= и т.д. после пересылки логина и пароля, меня перекидывают на http://www.e1.ru/login?PRdQKFQm)

POST /mye1/index.fcgi HTTP/1.1
Host: http://www.e1.ru
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://www.e1.ru/mye1/
Cookie: urbid=Te78wAAAANwDAwUCLJL1efBaTLY=; __utma=57904556.981528308.1307508085.1307508085.1307508085.1; __utmb=57904556.1.10.1307508085; __utmc=57904556; __utmz=57904556.1307508085.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
Content-Type: application/x-www-form-urlencoded
Content-Length: 58
sub=login&key=&url=&email=xicc%40mail.ru&password=olya1111
HTTP/1.1 302 Moved
Server: nginx
Date: Wed, 08 Jun 2011 04:42:59 GMT
Content-Type: text/plain; charset=windows-1251
Transfer-Encoding: chunked
Connection: close
Location: /login?PRdQKFQm
———————————————————-

Владимир
Владимир
08/06/2011 10:56

P.S. логин и пароль написаны исключительно для примера.

Владимир
Владимир
17/06/2011 06:21

:( может кто-нибудь поможет?

m1sclick
23/07/2011 00:08

Не так давно начал знакомиться с synapse прочитав эту статью на сайте и был очень доволен но сейчас когда не много набрался опыта и потребности возросли стал сталкиваться с очень не приятными постоянными проблемами. Больше всего интересует вопрос почему synapse возвращает 200-х код на месте 302-го даже если все данные заполнены правильно. Вот например есть у меня авторегер аккаунтов на rambler.ru написаный с использованием IdHTTP — полностью рабочий и в отличие от Synapse не зависает при отправке запросов благодаря AntiFreeze, но суть не в этом. Решил я на днях ради практики переписать данный регер с использованием Synapse. Оформил все правильно… Подробнее »

Luzhniki_Luna
Luzhniki_Luna
05/08/2011 20:17

Кто знает, подскажите пожалуйста где есть каталоги сайтов или инет магазинов? Где можно например описать свой сайт и оставить на его линк. Но желательно без обратной ссылки.
Спасибо огромное за ранее всем кто ответит!!!

nagpreeving
nagpreeving
24/11/2011 00:57

Всем привет! Подскажите, где можно программу синхронизации мобильник с ПК скачать?

Stuspidship
Stuspidship
24/05/2012 18:25

Gays you create a wonderful resourse =)

TeploiUyt
TeploiUyt
05/02/2013 16:09

Кто знает нармальную соц сеть? Кроме майла,одноклаников и всякой подобной лабуды.

trackback

[…] Тяжеловатая была неделька. Семь дней в работы, постоянные напряги, всё что-то кому-то надо…жесть. Но все когда-то заканчивается (слава богу, неделя кончилась) и сегодня решил запостить в блог новую статейку. И решил сделать этот пост, опять же, адресным — ответ на комментарий. […]

Александр Анатолий

Помогите пожалуйста с POST запросом на сайт rustorka.com
за работу буду платить деньги
пишите в скайп sashasxs