Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Создание Delphi-программы для отслеживания перенаправлений URL, записи полного QueryString и отслеживания установленных cookie с помощью Indy компонентов

Delphi , Интернет и Сети , URL

При получении маркетинговых писем с URL-ссылками, которые перенаправляются с сайта на сайт, может возникнуть желание отслеживать каждый URL-переход, записывать полный QueryString и отслеживать установленные cookie в процессе. В этой статье мы рассмотрим, как это можно сделать с помощью компонентов Indy в Delphi.

Шаг 1: Подготовка

Сначала нам нужен HTTP-клиент, в нашем случае это TIdHTTP из Indy. Также нам понадобится структура данных для хранения результатов:

type
  TRedirection = record
    queryString: String;
    cookies: TStringList;
  end;

  TRedirectionArray = array of TRedirection;

Шаг 2: Создание класса для отслеживания перенаправлений

Создадим класс TRedirectionTester, который будет выполнять основную работу. Этот класс необходим, так как функции-обработчики событий определены как procedure of object.

type
  TRedirectionTester = class
  private
    FRedirData: TRedirectionArray;
    procedure redirectEvent(Sender: TObject; var dest: string;
      var NumRedirect: Integer; var Handled: boolean; var VMethod: TIdHTTPMethod);
    procedure newCookie(ASender: TObject; ACookie: TIdCookie; var VAccept: Boolean);
  public
    function traverseURL(url: String): TRedirectionArray;
    property RedirData: TRedirectionArray read FRedirData;
  end;

Шаг 3: Обработка перенаправлений

Реализуем обработчик события OnRedirect, который будет добавлять запись в массив при каждом перенаправлении.

procedure TRedirectionTester.redirectEvent(Sender: TObject; var dest: string;
  var NumRedirect: Integer; var Handled: boolean; var VMethod: TIdHTTPMethod);
var
  redirDataLength: Integer;
begin
  Handled := True;

  redirDataLength := Length(FRedirData);
  SetLength(FRedirData, redirDataLength + 1);

  FRedirData[redirDataLength].queryString := dest;
  FRedirData[redirDataLength].cookies := TStringList.Create;
end;

Шаг 4: Обработка установленных cookie

Реализуем обработчик события OnNewCookie, который будет добавлять установленные cookie в массив.

procedure TRedirectionTester.newCookie(ASender: TObject; ACookie: TIdCookie; var VAccept: Boolean);
var
  redirDataLength: Integer;
begin
  VAccept := True;

  redirDataLength := High(FRedirData);
  if (Assigned(FRedirData[redirDataLength].cookies)) then
    FRedirData[redirDataLength].cookies.Add(ACookie.CookieText);
end;

Шаг 5: Реализация основной функции

Реализуем функцию traverseURL, которая будет отправлять запросы и возвращать массив с результатами.

function TRedirectionTester.traverseURL(url: String): TRedirectionArray;
var
  traverser: TIdHTTP;
begin
  traverser := TIdHTTP.Create();
  traverser.HandleRedirects := True;
  traverser.OnRedirect := redirectEvent;
  traverser.CookieManager := TIdCookieManager.Create();
  traverser.CookieManager.OnNewCookie := newCookie;

  SetLength(FRedirData, 1);
  FRedirData[0].queryString := url;
  FRedirData[0].cookies := TStringList.Create;

  traverser.Get(url);

  Result := FRedirData;
end;

Пример использования

Чтобы использовать класс TRedirectionTester в своей форме, создайте экземпляр класса и вызовите функцию traverseURL при нажатии кнопки:

procedure TForm1.Button1Click(Sender: TObject);
var
  tester: TRedirectionTester;
  redirData: TRedirectionArray;
begin
  tester := TRedirectionTester.Create;
  redirData := tester.traverseURL('http://example.com');
  // Обработайте массив redirData с результатами перенаправлений
  tester.Free;
end;

Этот пример отслеживает перенаправления, записывает полный QueryString и отслеживает установленные cookie для заданного URL. Обратите внимание, что данное решение работает только с перенаправлениями на уровне HTTP (коды состояния 301 и 302). Для отслеживания перенаправлений, выполненных с помощью тегов <meta> или JavaScript, потребуется дополнительная обработка результатов запроса.

Создано по материалам из источника по ссылке.

В инструкции описано создание Delphi-программы для отслеживания перенаправлений URL, записи полного QueryString и отслеживания установленных cookie с помощью Indy компонентов.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: URL ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 00:16:19/0.0032041072845459/0