Delphi WebBrowser设置自己定义User-Agent


本文整理自网络,侵删。

 
前言
我们在浏览网页的时候HTTP协议头里会包括一项数据User-Agent,这个User-Agent会告诉网站服务器,我们是通过什么工具来访问服务的,其中包括操作系统、操作系统版本、浏览器类型及版本等诸多信息。
修改User-Agent信息会是很多爬虫工具所必须的内容。我们自己有时候做项目需要使用到WebBrowser控件,同时不希望所访问的服务器知道某些不希望透露的信息,或是想要对服务端发送一些必须的信息时,也就需要对WebBrowser的User-Agent信息作出一些修改。

这里,简单介绍两种修改User-Agent信息的方式:

使用WebBrowser打开URL时
WebBrowser的Navigate方法,可让我们打开指定的URL,让网页显示到浏览器中,通常我们只是在方法里填写URL地址就可以的。如:WebBrowser1.Navigate(‘http://www.XXXXXX.com’);
实际Navigate方法有多种重载方式:

    procedure Navigate(const URL: WideString); overload;
    procedure Navigate(const URL: WideString; const Flags: OleVariant); overload;
    procedure Navigate(const URL: WideString; const Flags: OleVariant; 
                       const TargetFrameName: OleVariant); overload;
    procedure Navigate(const URL: WideString; const Flags: OleVariant; 
                       const TargetFrameName: OleVariant; const PostData: OleVariant); overload;
    procedure Navigate(const URL: WideString; const Flags: OleVariant; 
                       const TargetFrameName: OleVariant; const PostData: OleVariant; 
                       const Headers: OleVariant); overload;

我们可以使用上面5种中的1种来打开需要访问的网页。每种方法的使用参数请对应参数名。我们现在重点是考虑如果在打开URL的同时设置自定义的User-Agent数据(User-Agent数据包含在Headers里,设置时还可同时设置更多的信息)。
我们使用以下代码:

var
  EmptyParam: OleVariant;
  vUrl,vHead:string;
begin
  EmptyParam := System.Variants.EmptyParam;

  vUrl:='https://blog.csdn.net/tanqth';
  vHead:='Content-Type: application/x-www-form-urlencoded'+#10#13+
  'Referer: https://blog.csdn.net/'+#10#13+  //告诉服务器该网页是从blog.csdn.net页面链接过来的
  // 操作系统为Mac OS X 10.11   浏览器是Firefox
  'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:46.0) Gecko/20100101 Firefox/46.0';

  WebBrowser1.Navigate( vUrl, EmptyParam, EmptyParam, EmptyParam, vHead);
end;

上面代码中,我们设置了Referer,他会告诉服务器,我们的上一个网页是什么(这里指定了https://blog.csdn.net),意思是从https://blog.csdn.net跳转过来的。
其次,User-Agent设置为Mac OS X 10.11的操作系统,以及Firefox 浏览器。

使用UrlMkSetSessionOption方式
使用前,需要引用 UrlMon, WinInet,使用方式更为简单,我们可以把UrlMkSetSessionOption的调用直接加到窗体或程序初始化创建时。

procedure TForm5.FormCreate(Sender: TObject);
const
  aUserAgent =
    'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240';
begin
  UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, PChar(aUserAgent),
    Length(aUserAgent), 0);
end;

这里设置了一个常量aUserAgent,指定了我们自定义的User-Agent内容。

常用的User-Agent
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240
Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 640 XL LTE) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10166
Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Mobile Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36 OPR/37.0.2178.31
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:46.0) Gecko/20100101 Firefox/46.0
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36
Mozilla/5.0 (X11; CrOS x86_64 10066.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36 OPR/37.0.2178.31
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A
NokiaX2-02/2.0 (11.79) Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2;.NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2) UCBrowser8.4.0.159/70/352
Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.16
Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240'


相关或类似文章
《Delphi WebBrowser完成网页自动登录》这是一个Delphiw WebBrowser使用中完成网页自动登录的文章

其他需要
您可以联系我。

来源:https://blog.csdn.net/tanqth/article/details/107901910

相关阅读 >>

Delphi fdconnection取得excel工作表名

winapi 字符及字符串函数(6): ischaralphanumeric - 是否是个文字(字母或数字)

Delphi实现win10下Delphi 10.3.1 inline hook 修改mac网卡地址之getadaptersaddresses

Delphi开发的服务中调用指定应用程序

Delphi 创建圆形或椭圆形窗体

Delphi 弹出带黄色感叹号对话框提醒

Delphi tchart 的使用

Delphi 获取所有磁盘分区另类方法

Delphi webbrowser 跨域访问

Delphi 切换大小写的例子

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



打赏

取消

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

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

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

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

评论

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