Вы можете купить здесь рекламу. Вы можете купить здесь рекламу.

Stass

Проверка на авторские статьи.
Главный редактор

Stass

Проверка на авторские статьи.
Главный редактор
Статус
Offline
С нами
Сообщения
169
Симпатии
7
Розыгрыши
0
#1
Под дельфи существует 2 типа библиотеки : Chilkat ActiveX и Chilkat Delphi DLL API
В зависимости от библиотек и код будет немного разный. Я буду использовать dll api. Устанавливается довольно просто, кидаем папку, приписываем в Library пути. Я использую 9.5.0.48 версию (нашел в сети якобы ломаную), вы можете использовать и более новую, так же существует кейген v.2.7 для версии 9.5.0.67 от Uret. Довольно легко ищется в гугле (например у Иранцев).


+ Автоматические редиректы. Что то типа INDY но более простое, не нужно подключать библиотеки и кидать на форму элементы. Просто прописываем код - все остальное библиотека делает сама.
+ Очень простой код. Пока, что очень просто разбираться.
+ Довольно подробная информация на оф сайте по функциям со ссылками на часть примеров. Конечно хотелось бы большего, но хоть что то есть.


Итак начнем:

Создаем новый проект. На форму кидаем 2 memo и 1 кнопку:



Этого будет вполне достаточно, для примера.

Chilkat подключается следующим способом:
Добавляем в uses

Код:
uses
Http
Далее по тексту, например в кнопку
Код:
var
http: HCkHttp;
begin..
Код:
http := CkHttp_Create();
и в конце, мы завершаем http запрос
Код:
CkHttp_Dispose(http);
end;...
Очень похоже на тот же синапс, неправда ли :)


Так же нам необходимо библиотеку ChilkatDelphiXE.dll положить в папку программы, рядом с исходником - или в \Win32\Debug или релиз, чтобы программа наша запустилась.

Для примера, будем делать простейший парсер прокси по ссылкам, которые будут находиться в memo2 а в memo1 будем получать спарсенный результат.

Так же нам нужно будет подключить RegExpr для парсинга результатов:

Код:
uses
RegExpr
Создаем на кнопке код: Код я дам с пояснениями
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
http: HCkHttp;   // http
success: Boolean; //проверка лицензии
html: PWideChar;
i:integer;
Reg: TRegExpr; //регулярка
site:string;

begin
for i:=0 to Form1.Memo2.Lines.Count-1 do
    begin

      http := CkHttp_Create();  // http
      Reg:= TRegExpr.Create;  // регулярка

      //  Any string unlocks the component for the 1st 30-days.
     // Дальше идет код, для проверки валидности библиотеки. Он нужен для запуска, так же если вы используете кейген, тут же можно вписать свой ключ
      success := CkHttp_UnlockComponent(http,'Anything for 30-day trial');
      if (success <> True) then
        begin
          Form1.Memo1.Lines.Add(CkHttp__lastErrorText(http));
          Exit;
        end;

       site:=Form1.Memo2.Lines.Strings[i]; // перебираем ссылки

      //  Send the HTTP GET and return the content in a string.

      html := CkHttp__quickGetStr(http, PWideChar(WideString(site))); // get запрос по ссылкам

       Reg.Expression := '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5}'; //регулярка

         if Reg.Exec(html) then repeat Form1.Memo1.Lines.Add(reg.Match[0]);
           until not Reg.ExecNext;

        CkHttp_Dispose(http);
        Reg.Free;
     end;
end;
Код конечно не идеальный, но для общих представлений о работе библиотеки вполне годиться. Как вы можете видеть, создаем простой запрос к списку ссылок и получаем спарсеный результат.

Как вы видите у меня здесь нету ни ридеректов, ни юзерагентов и другой информации которая задается при запросах. Все, что мне нужно, это вставить ссылки в memo2 и посмотреть как работает программа.
You must be registered for see images

При анализе соединений все наглядно видно. Юзерагент по умолчанию который задан в программе (в той версии, что я использую):
Код:
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0
Так же идут редиректы 302 которые библиотека сама обрабатывает. Массовые редиректы (1-я ссылка на гугль блоги, как пример) Идут запросы не только к http:// сайтам, но и к https:// Библиотека все сама обрабатывает.
You must be registered for see images

Более сложные GET и POST я пока еще не пробовал, в том числе и с проксями, но пока, что как по мне, достаточно интересная библиотека, покрайней мере для простецких соединений. 2-3 строчки кода - все работает и не нужно париться по поводу всяких редиректов и приписывания библиотек. Единственной минус, что я пока вижу - это непонятности с лицензией и насколько удачный "отлом" этой версии библиотек.

Исходник и проект смысла нету выкладывать - все пишется за 3 минуты.