VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 594|回复: 13

[求助] 有关cwebbrowser2使用自定义的user-agent

[复制链接]
50_avatar_middle
在线会员 pklong007 发表于 2018-3-6 16:13:23 | 显示全部楼层 |阅读模式
3驿站币
最近在使用webbrowser,但是网站里面可能有校对USER-AGENT字段,如果不符合要求就转到下载页面,试了在navigate方法加入自定义的user-agent,但是如何一直使用相同的USER-AGENT?
发现网址跳转时的USER-AGENT变回原来默认的





上一篇:difxapi.h
下一篇:连续的条件运算符(? :)表示什么意思?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2018-3-6 16:18:26 | 显示全部楼层
方便的话可以添加 BeforeNavigate2 接口,这样所有的请求你就都可以拦截并且修改 User-Agent 了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

50_avatar_middle
ico_lz  楼主| pklong007 发表于 2018-3-6 16:33:51 | 显示全部楼层
Syc 发表于 2018-3-6 16:18
方便的话可以添加 BeforeNavigate2 接口,这样所有的请求你就都可以拦截并且修改 User-Agent 了

好的我试试,谢SYC

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

50_avatar_middle
ico_lz  楼主| pklong007 发表于 2018-3-6 16:51:59 | 显示全部楼层
试了下,重载OnBeforeNavigate2Explorer1,发现跳转时程序假死了,CPU占用100%
这是我加的代码:
CString strHeaders=_T("User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)  \
                Chrome/55.0.2883.75 Safari/537.36 Maxthon/5.1.6.3000\r\n");   
    VARIANT vHeaders=StringToVariant(strHeaders);
        IWebBrowser2* lpWebBrowser2;
        HRESULT hr = pDisp->QueryInterface(IID_IWebBrowser2, (PVOID*)&lpWebBrowser2);

        if (hr == S_OK)
        {
                lpWebBrowser2->Navigate2(URL,Flags,TargetFrameName,PostData,&vHeaders);
        }
        else{
                AfxMessageBox("");
        }

说明一下,这里用的是HTTPS的登陆页面

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

50_avatar_middle
ico_lz  楼主| pklong007 发表于 2018-3-6 16:55:30 | 显示全部楼层
不知道哪出问题了....有关cwebbrowser2使用自定义的user-agent

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-3-7 11:33:46 | 显示全部楼层
pklong007 发表于 2018-3-6 16:55
不知道哪出问题了....

调试下看看卡死在哪行代码了,另外,崩溃了吗?如果崩溃了加上 try-catch 捕获下异常

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-3-7 11:36:10 | 显示全部楼层
pklong007 发表于 2018-3-6 16:55
不知道哪出问题了....

楼主说的卡死是不是死循环了,你在 BeforeNavigate2 中调用 Navigate2,Navigate2内部又会调用 BeforeNavigate2,这样一直递归,最后导致栈溢出了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

50_avatar_middle
ico_lz  楼主| pklong007 发表于 2018-3-13 10:06:43 | 显示全部楼层
Syc 发表于 2018-3-7 11:36
楼主说的卡死是不是死循环了,你在 BeforeNavigate2 中调用 Navigate2,Navigate2内部又会调用 BeforeNav ...

嗯,是的,你说的对,应该怎么做才对?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-3-13 10:12:17 | 显示全部楼层
pklong007 发表于 2018-3-13 10:06
嗯,是的,你说的对,应该怎么做才对?

BeforeNavigate2 中没必要调用 Navigate2,修改完 Header 之后正常返回就行,WebBrowser 控件会自动调用 Navigate2 的

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

50_avatar_middle
ico_lz  楼主| pklong007 发表于 2018-3-13 14:15:38 | 显示全部楼层
Syc 发表于 2018-3-13 10:12
BeforeNavigate2 中没必要调用 Navigate2,修改完 Header 之后正常返回就行,WebBrowser 控件会自动调用  ...

好的,我试试,谢谢

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

50_avatar_middle
ico_lz  楼主| pklong007 发表于 2018-3-13 17:18:48 | 显示全部楼层
Syc 发表于 2018-3-13 10:12
BeforeNavigate2 中没必要调用 Navigate2,修改完 Header 之后正常返回就行,WebBrowser 控件会自动调用  ...

BeforeNavigate2里面把
CString strHeaders=_T("User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)  \
                Chrome/55.0.2883.75 Safari/537.36 Maxthon/5.1.6.3000\r\n");   
    VARIANT vHeaders=StringToVariant(strHeaders);
        *Headers=vHeaders;
        *Cancel=FALSE;
抓包发现user-agent在页面跳转时并没有用到这里的改写头

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-3-13 17:49:30 | 显示全部楼层
pklong007 发表于 2018-3-13 17:18
BeforeNavigate2里面把
CString strHeaders=_T("User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) App ...

那就再按照我下面说的这样试试!
在 BeforeNavigate2 中加个判断,判断下 header 是否被修改过,如果没修改过,那么就修改,并且修改完了调用 Navigate2,如果再次进来 BeforeNavigate2,发现header已经被修改过了,就不做任何操作直接返回,明白了吗,这样可以防止递归的产生!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

50_avatar_middle
ico_lz  楼主| pklong007 发表于 2018-3-14 08:05:55 | 显示全部楼层
Syc 发表于 2018-3-13 17:49
那就再按照我下面说的这样试试!
在 BeforeNavigate2 中加个判断,判断下 header 是否被修改过,如果没 ...

好的,谢SYC

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

50_avatar_middle
ico_lz  楼主| pklong007 发表于 2018-3-14 08:29:01 | 显示全部楼层
貌似这个也不行,我在
CString strHeaders=_T("User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)  \
                Chrome/55.0.2883.75 Safari/537.36 Maxthon/5.1.6.3000\r\n");   
    VARIANT vHeaders=StringToVariant(strHeaders);
        IWebBrowser2* lpWebBrowser2;
        HRESULT hr = pDisp->QueryInterface(IID_IWebBrowser2, (PVOID*)&lpWebBrowser2);

        CString orgHeader=VariantToCString(*Headers);
        if(orgHeader !=strHeaders)
        {
                *Headers=vHeaders;
                lpWebBrowser2->Navigate2(URL,Flags,TargetFrameName,PostData,Headers);
        }

这样也不行,就一开始那个header是我定义的,后面传回那个Header是空的vt=8,值是0

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-9-26 21:29

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表