프로그래밍/델파이

Wininet Component Suite에서 User Agent를 바꾸어 통신하기.

채윤아빠 2010. 3. 12. 19:27
728x90
반응형
서론
Wininet Component Suite의 TInetHttp 컴포넌트를 그대로 사용하여 웹서버와 통신을 하게되면 웹 서버의 User Agent 부분에 "WinInetComponentSuite"로 남게 됩니다. 물론 TIdHTTP를 사용하면 "Indy"라고 User Agent가 남게 됩니다. Indy에서는 User Agent가 변경이 가능하지만, TInetHttp는 직접적으로 변경할 수 있는 속성을 제공하지 않습니다.


User Agent 변경하기
TInetHttp에서는 직접적으로 User Agent를 변경할 수 있는 속성을 제공하지 않기 때문에, 다음과 같이 AddRequestHeader 메소드를 이용하여 User Agent를 변경할 수 있습니다.
  with INetHttp do
  try
    INetUrl.Url := EditUrl.Text;

    ServerName := INetUrl.HostName;
    Port := INetUrl.Port; // 포트 할당
    if ('https' = AINetUrl.Scheme) then // https 요청인 경우 암호화를 위한 플래그 설정 필요
      Flags := Flags + [flIgnoreCertCnInvalid, flIgnoreCertDateInvalid, flSecure];

    Open;
    OpenRequest('GET', INetUrl.UrlPath + INetURL.ExtraInfo);
    AddRequestHeader('User-Agent: MyWininetTestAgent'); // User-Agnet 변경
    SendRequest;

    repeat
      strData := InetHttp.GetData;
    until strData = '';
  finally
    CloseRequest;
    Close;
  end;
위와 같이 User Agent를 설정하면 다음과 같이 서버 요청시 User Agent가 변경되어 호출되는 것을 확인하실 수 있습니다.


결론
Wininet Component Suite의 TInetHttp 컴포넌트의 AddRequestHeader 메소드를 이용하여 User Agent를 변경해 보았습니다.


관련자료