Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.04.2015, 23:08
Devilscream Devilscream вне форума
Прохожий
 
Регистрация: 10.04.2015
Сообщения: 1
Версия Delphi: Delphi 72
Репутация: 10
По умолчанию Авторизация и парс на Яндекс ру. ну тема не сложная же а?

Народ ну хелп ми а ?
Как сделать авторизация на яндексе и скопировать уже с авторизованного ака (со страницы яндекс ру) один всего 1 символ?

А теперь конкретней.
1 авторизуемся на яндекс ру.
2 Со страницы Яндекс ру находим искомое слово (уже сделал).
3 Парсим и выводи в лейбл (тоже есть).


Народ ну вот код парса (ниже) , (на форме Батон,лейбл и TIdHTTP)
А как теперь сделать авторизацию? и дальнейший парс ?

Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdHTTP, StdCtrls,ComObj,ExcelXP, ActiveX, Grids, OleServer, Excel2000,
  IdMessageClient, IdSMTP;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    IdHTTP1: TIdHTTP;
    Button3: TButton;
    ExcelApplication1: TExcelApplication;
    IdSMTP1: TIdSMTP;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
 
      
  private
    { Private declarations }
  public
    { Public declarations }
     vExcel: Variant;
  end;
 
var
  Form1: TForm1;
  i:integer;
 
 
 
implementation
 
{$R *.dfm}
 
 
  function Pars(T_, ForS, _T: string): string;
var
  a, b: integer;
begin
  Result := '';
  if (T_ = '') or (ForS = '') or (_T = '') then
    Exit;
  a := Pos(T_, ForS);
  if a = 0 then
    Exit
  else
    a := a + Length(T_);
  ForS := Copy(ForS, a, Length(ForS) - a + 1);
  b := Pos(_T, ForS);
  if b > 0 then
    Result := Copy(ForS, 1, b - 1);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
 
var
 Source, Source_forum:TstringList;
Begin
 
 
  Source:=TStringList.Create;
  Source.Text:=IdHTTP1.Get('http://www.yandex.ru/');
  label1.caption:=Utf8ToAnsi (WideString(label1.caption));
    Source.Text:=Utf8ToAnsi (WideString( Source.Text));
 
  label1.caption:=label1.caption+Pars('<a href="//maps.yandex.ru/traffic" class="b-link_black_novisit">',Source.Text,'</a>');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
   vExcel:=CreateOleObject('Excel.Application');
   vExcel.Visible:=false;
 
      end;
end.
Админ: Пользуемся тегами для оформления кода!

Последний раз редактировалось Admin, 11.04.2015 в 11:05.
Ответить с цитированием
  #2  
Старый 11.04.2015, 11:16
CynicRus CynicRus вне форума
Прохожий
 
Регистрация: 26.02.2013
Сообщения: 30
Версия Delphi: Lazarus, XE 3.
Репутация: 10
По умолчанию

Берёшь HTTP сниффер, смотришь им как авторизуется бразуер, повторяешь это в своём коде, Proffit!
Ответить с цитированием
  #3  
Старый 11.04.2015, 11:42
Аватар для Admin
Admin Admin вне форума
Администратор
 
Регистрация: 03.10.2005
Адрес: Россия, Москва
Сообщения: 1,564
Версия Delphi: Delphi 7
Репутация: выкл
По умолчанию

И не забываем подставлять куки и рефереры
Ответить с цитированием
  #4  
Старый 12.04.2015, 11:37
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
function TYandexJobThread.Login: String;
var
  s: String;
  i: Integer;
begin
  Result:='';
  (* auth *)
  s:='';
  s:=s+'&from=passport';
  s:=s+'&retpath=https://passport.yandex.ru/passport?mode=passport';
  s:=s+'&display=page';
  s:=s+'&login='+StrToHex(ALogin);
  s:=s+'&passwd='+StrToHex(APass);
  s:=DoRequestHttps('POST', 'passport.yandex.ru', '/passport?mode=auth&twoweeks=yes', '', s);
  i:=Pos('Passport.idkey', s);
  if i=0 then raise Exception.Create('!Passport.idkey');
  s:=Trim(Copy(s, i+14, Length(s)));
  if s[1]<>'=' then raise Exception.Create('!Passport.idkey');
  s:=Trim(Copy(s, 2, Length(s)));
  i:=Pos(';', s);
  if i=0 then raise Exception.Create('!Passport.idkey');
  s:=Trim(Copy(s, 1, i-1));
  if s<>'''''' then raise Exception.Create('!auth');
end;
100% рабочий код
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:29.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter