Delphi CEF4Delphi Chromium1 设置User-Agent


本文整理自网络,侵删。

 
方法1
procedure TMiniBrowserFrm.Chromium1BeforeResourceLoad(Sender: TObject;
  const browser: ICefBrowser; const frame: ICefFrame;
  const request: ICefRequest; const callback: ICefRequestCallback;
  out Result: TCefReturnValue);

  //===============设置 User-Agent
var
  TempOldMap, TempNewMap : ICefStringMultimap;
  i : NativeUInt;
  TempReplaced : boolean;
  userAgent : string;
begin
  Result := RV_CONTINUE;
   userAgent := EditUA.Text;
  if userAgent <> '' then
    try
      // We replace the Accept-Encoding HTTP header to request uncompressed resources.
      // If the server sends uncompressed resources it should be easier to handle the
      // end of the resource reception because we may know its length.

      TempNewMap := TCefStringMultimapOwn.Create;
      TempOldMap := TCefStringMultimapOwn.Create;

      request.GetHeaderMap(TempOldMap);

      TempReplaced := False;
      i := 0;
      while (i < TempOldMap.Size) do
        begin
          if (CompareText(TempOldMap.Key[i], 'User-Agent') = 0) then
            begin
              TempNewMap.Append('User-Agent', userAgent);
              TempReplaced := True;
            end
           else
            TempNewMap.Append(TempOldMap.Key[i], TempOldMap.Value[i]);

          inc(i);
        end;

      if not(TempReplaced) then TempNewMap.Append('User-Agent', userAgent);
      request.SetHeaderMap(TempNewMap);
    finally
      TempNewMap := nil;
      TempOldMap := nil;
    end;
  //===============设置 User-Agent

  Result := RV_CONTINUE;

  if Chromium1.IsSameBrowser(browser) and
     (frame <> nil) and
     frame.IsMain and
     frame.IsValid then
    InspectRequest(request);
end;



方法2
procedure TMiniBrowserFrm.Chromium1BeforeResourceLoad(Sender: TObject;
  const browser: ICefBrowser; const frame: ICefFrame;
  const request: ICefRequest; const callback: ICefRequestCallback;
  out Result: TCefReturnValue);
  //===============设置 User-Agent
Var
  map: ICefStringMultimap;
begin
    map := TCefStringMultimapOwn.Create;
    request.GetHeaderMap(map);
    map.Append('User-Agent','Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16');
    request.SetHeaderMap(map);
    callback.Cont(true);
end;
  //===============设置 User-Agent
  Result := RV_CONTINUE;

  if Chromium1.IsSameBrowser(browser) and
     (frame <> nil) and
     frame.IsMain and
     frame.IsValid then
    InspectRequest(request);
end;

相关阅读 >>

Delphi颜色转换函数

Delphi日期和时间

Delphi 关于xe10下indy发送字符串编码的问题

Delphi fmx调用jar里的java类init方法

Delphi 域名转ip并判断ip是否可以联通 复制代码

Delphi xe5 for android 退出提示

Delphi 跳出循环的几种方法

强大的Delphi rtti--兼谈需要了解多种开发语言

Delphi 测试磁盘是否具有写访问权限

Delphi hextoint32

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...