Переходим на сайт [Ссылки могут видеть только зарегистрированные пользователи. ]. Вы не должны быть авторизованы на сайте! Если вы авторизованы на сайте, тогда выйдите со своего профиля.
Включаем Charles. Ждем пока он включится и, когда он включился, нажимаем на кнопочку: Скрин
[Ссылки могут видеть только зарегистрированные пользователи. ]
Должен засветится красный огонёк посередине кнопочки: Скрин
[Ссылки могут видеть только зарегистрированные пользователи. ]
В дальнейшем я буду называть эту кнопку кнопкой "Запись", а её состояние на первом рисунке - выключенной, на втором - включенной.
Переходим в окно браузера и авторизуемся на сайте [Ссылки могут видеть только зарегистрированные пользователи. ], поставив галочку "запомнить". Когда авторизовались, выходим из своего профиля. Когда вышли из профиля, заново авторизуемся, только уже не ставим галочку "запомнить". Зачем столько раз авторизоваться вы поймете позже.
Теперь переходим в окно Charles и выключаем "Запись".
Теперь мы можем переходить к анализу полученных данных. В поле вкладки "Structure" должны были появится адреса сайтов: Скрин
[Ссылки могут видеть только зарегистрированные пользователи. ]
Из этих адресов, нас интересует только "http://dump.ru/". Кликаем на нем: Скрин
[Ссылки могут видеть только зарегистрированные пользователи. ]
Теперь поясню что же появилось:
Первый <default> - это наша первая авторизация(с галочкой), точнее запрос на нее;
Второй <default> - это запрос выхода из профиля;
Третий <default> - это запрос на последнюю авторизацию(без галочки).
Зачем нам было три запроса:
В первом и третьем мы будем сравнивать "Request", чтобы узнать как он зависит от галочки "запомнить";
Во первом и втором мы будем сравнивать "Response", чтобы узнать разницу в ответе сервера в случаях, когда пользователь авторизован и когда не авторизован.
Теперь выбираем первый <default> и переходим на вкладку "Request": Скрин
[Ссылки могут видеть только зарегистрированные пользователи. ]
После этого проделываем те же действия с третьим <default>'ом: Скрин
[Ссылки могут видеть только зарегистрированные пользователи. ]
Теперь анализируем два Request'а. В первом запросе(с галочкой) есть поле auth_remember, а во втором нету.
Теперь приступаем к анализу Response'ов первого(авторизации) и второго(выхода) <default>'ов. Для этого выбираем первый <default> и переходим на вкладку "Response": Скрин
[Ссылки могут видеть только зарегистрированные пользователи. ]
После этого проделываем те же действия с вторым <default>'ом: Скрин
[Ссылки могут видеть только зарегистрированные пользователи. ]
Теперь анализируем два Response'а. В этой части мы поиграем в игру "найди 10 отличий", только нам будет достаточно и одного... Как мы видим на скрине, два Response'а отличаются строкой:
Теперь нам нужно заполнить TStingList данными из Request'а, но мы не должны забывать, что поле "auth_remember" должно добавлятся только тогда, когда у нас стоит галочка "запомнить". В нашей программе e-mail мы будем вводить в Edit1, а пароль в Edit2, по этому код будет такой:
Код:
Data.Add('auth_login='+Edit1.Text);
Data.Add('auth_password='+Edit2.Text);
if CheckBox1.Checked then
begin
Data.Add('auth_remember=ok');
end;
Теперь нам нужно отправить запрос на сайт dump.ru с данными в TStringList'е, подгружая Response в String:
Код:
Request:=HTTP.Post('http://dump.ru/',Data);
На предыдущем этапе можно и завершить авторизацию, но как же узнать авторизовались мы, или нет? Для этого мы и искали отличия в Response. Мы помним, что при удачной авторизации в Response появлялась строка.
В этой строке "Statia" - это название учётной записи. Для проверки можно выбрать только кусочек этой строки
Цитата:
http://dump.ru/profile/
По этому у нас получится такой код:
Код:
if Pos('http://dump.ru/profile/',Request)<>0 then
begin
ShowMessage('Авторизация прошла успешно');
end
else
begin
ShowMessage('Авторизация не удалась');
end;
Ну и под конец нам нужно очистить переменные для того, чтобы авторизоватся можно было много раз:
Код:
Data.Free;
Request:='';
HTTP.Free;
Полный код процедуры нажатия на кнопку:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
Data:TStringList;
Request:String;
HTTP:TIdHTTP;
begin
Data:=TStringList.Create;
HTTP:=TIdHTTP.Create(nil);
HTTP.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)';
Data.Add('auth_login='+Edit1.Text);
Data.Add('auth_password='+Edit2.Text);
if CheckBox1.Checked then
begin
Data.Add('auth_remember=ok');
end;
try
Request:=HTTP.Post('http://dump.ru/',Data);
if Pos('http://dump.ru/profile/',Request)<>0 then
begin
ShowMessage('Авторизация прошла успешно');
end
else
begin
ShowMessage('Авторизация не удалась');
end;
finally
Data.Free;
Request:='';
HTTP.Free;
end;
end;
Теперь, когда мы закончили написание программы, запускаем программу и смотрим, что получилось.
Скачать исходник([Ссылки могут видеть только зарегистрированные пользователи. ],[Ссылки могут видеть только зарегистрированные пользователи. ],[Ссылки могут видеть только зарегистрированные пользователи. ],[Ссылки могут видеть только зарегистрированные пользователи. ],[Ссылки могут видеть только зарегистрированные пользователи. ]);
Скачать скриншоты([Ссылки могут видеть только зарегистрированные пользователи. ],[Ссылки могут видеть только зарегистрированные пользователи. ],[Ссылки могут видеть только зарегистрированные пользователи. ],[Ссылки могут видеть только зарегистрированные пользователи. ],[Ссылки могут видеть только зарегистрированные пользователи. ]);
Статья писалась VeTaL_UA для Zhyk.RU. При копировании указывать ссылку на данную тему.
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
var
...
HTTP:TIdHTTP;
begin
HTTP:=TIdHTTP.Create(nil);
...
HTTP.Free;
end;
Цитата:
Сообщение от Z.Рэйзор
и обязательно менять юзер агент:
Добавил.
Спасибо за дополнение.
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
В этом тебе помогут эта(1) и эта(2) статьи. Первая поможет спарсить ссылку на капчу (обязательно смотри комментарии к этой теме), а вторая поможет вывести капчу в компонент TImage.
Желаю успехов
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Попробывал сделать с сайтом rghost.ru. Выдает эту ошибку.
[Ссылки могут видеть только зарегистрированные пользователи. ]
Что я делаю не так?
________________ К звездам... Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Попробывал сделать с сайтом rghost.ru. Выдает эту ошибку.
[Ссылки могут видеть только зарегистрированные пользователи. ]
Что я делаю не так?
Похоже неправильно указали ссылку, лучше покажите код
Добавлено через 4 минуты
Цитата:
Сообщение от Donwin
у меня вопрос : по таким материалам что у вас есть это можно применить к [Ссылки могут видеть только зарегистрированные пользователи. ]
Можете, сайт dump.ru взят для примера. Только нужно будет исследовать процесс авторизации на вашем сайте, чтобы понять, как сформировать правильное "общение" программы с сайтом
Последний раз редактировалось MembRupt; 06.02.2014 в 17:50.
Причина: Добавлено сообщение
Во-первых он говорит о редиректе.
Во-вторых он куки даёт.
делай так
Код:
try
IdHTTP1.Get('эта ссылка');
except
тут читаешь/записываешь куки через IdHTTP1.Responce.RawHeaders
end;
а тут уже с другой ссылкой работаешь используя полученные куки
Код написан по памяти, допустимы синтактические ошибки.
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). Пишу софт на заказ(Delphi / C# / PHP-скрипты). Описывайте задачи и цели софта, сообщайте сумму на которую рассчитываете.
Skype: vinozavr (Молдова)
Кто плюсует популярность, подписывайтесь пожалуйста)
Лично мой совет - переходите на синапс(Synapse). С прокси работает он быстрее чем инди, да и вообще, на мой взгляд, он проще и функциональнее. Ну хотя насчет проще не уверен. Начинающему может быть с ним трудно будет работаться, но обучится не так уж и трудно. Простой пример:
Писал накрутчик через прокси. Срау написал на инди - жутко медленно все работало, даже с быстрыми прокси. Переписал на синапсе - летает
________________
Тык спасибку если заслужил! Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
На многих сайтах используется JS и пост запрос отправляется уже на готовую ссылку. Для меня все печально
Интерпретируй javascript либо переводи на свой ЯП
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).