| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 165 人关注过本帖
标题:求助一个发送请求的问题
只看楼主 加入收藏
醉清风425
Rank: 1
等 级:新手上路
帖 子:3
专家分:7
注 册:2021-9-10
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
求助一个发送请求的问题
Excel里面vb编程,发送请求用的Set aHttpRequest = CreateObject("WinHttp.WinHttpRequest.5.1"),访问的网站是公司内部的网站,证书签名自己公司的证书,浏览器识别到是不安全的网站,协议是https,发送请求会提示附件中的内容
图片附件: 游客没有浏览图片的权限,请 登录注册

百度了很久应该是https协议需要双向认证,让提供客户端证书,百度到的方法用这条语句添加,aHttpRequest.SetClientCertificate ("LOCAL_MACHINE\TrustedPeople\")但不知道括号里面的证书路径怎么查看,随便设置的路径也不对;换用Set aHttpRequest = CreateObject("Microsoft.XMLHTTP")来发送请求的时候会提示网址有风险弹框,

点继续后就可以正常访问了,但是用第二个发请求的时候无法携带cookie,请问各位大佬有什么解决办法没?卡这三天了
两种方法:
1、让WinHttpRequest请求时像XMLHTTP请求一样弹出提示框点继续后可以继续进行
2、想办法让XMLHTTP请求可以像WinHttpRequest一样带cookie

很好奇用postman发送请求时就没有这些提示,java用httpclient发送请求也没有,不知道这两个是如何跳过这些验证的,

[此贴子已经被作者于2021-9-10 16:24编辑过]

搜索更多相关主题的帖子: 请求 发送 证书 提示 网站 
2021-09-10 16:15
约定的童话
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:4
帖 子:34
专家分:144
注 册:2021-8-1
收藏
得分:20 
'方    法:工程 - 引用-Microsoft WinHTTP Services, version 5.1
'说    明:WinHttp可以伪造HTTP协议头,伪装成真正的浏览器来访问网页,从而得到更真实的数据,比XmlHTTP相比更加灵活一些(一般用XmlHTTP不行的话,WinHttp决对能搞定)
'注    意:每个网站的协议头都不一样,这得看抓包数据结果来决定该设置哪些协议头,有些网站不能加"User-Agent"这个文件头,否则不会返回结果

Private Sub Command1_Click() '模拟GET
    Dim WinHttp As WinHttp.WinHttpRequest '声明一个对象
    Set WinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
    WinHttp.Open "GET", "http://www.baidu.com/", True
    WinHttp.SetTimeouts 30000, 30000, 30000, 30000 '设置超时时间
    WinHttp.Option(WinHttpRequestOption_SslErrorIgnoreFlags) = &H3300 '忽略错误
    '------------------------------------------------------------------------
    WinHttp.SetRequestHeader "Accept-Language", "zh-cn"
    WinHttp.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    '------------------------------------------------------------------------设置文件头(具体协议头该设置啥这得看抓包结果)
    WinHttp.Send            '发送
    WinHttp.WaitForResponse '异步发送
   
    While WinHttp.Status <> 200
        DoEvents
    Wend
   
    Text1.Text = BytesToBstr(WinHttp.ResponseBody, "UTF-8")          '返回HTML(同样可用WinHttp.ResponseText返回HTML)
    Text2.Text = WinHttp.GetAllResponseHeaders                       '返回所有协议头
   
    Set WinHttp = Nothing
End Sub

Private Sub Command2_Click() '模拟POST
    Dim ShuJu As String
   
    Dim WinHttp As WinHttp.WinHttpRequest '声明一个对象
    Set WinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
    ShuJu = "name=abc,pass=123456" '设置POST数据
    WinHttp.Open "POST", "http://www.baidu.com/xxx", True
    WinHttp.SetTimeouts 30000, 30000, 30000, 30000 '设置超时时间
    WinHttp.Option(WinHttpRequestOption_SslErrorIgnoreFlags) = &H3300 '忽略错误
    '------------------------------------------------------------------------
    WinHttp.SetRequestHeader "Content-Length", Len(ShuJu)
    WinHttp.SetRequestHeader "Accept-Language", "zh-cn"
    WinHttp.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    '------------------------------------------------------------------------设置文件头(具体协议头该设置啥这得看抓包结果)
    WinHttp.Send ShuJu       '发送
    WinHttp.WaitForResponse  '异步发送
   
    While WinHttp.Status <> 200
        DoEvents
    Wend
   
    Text1.Text = BytesToBstr(WinHttp.ResponseBody, "UTF-8")          '返回HTML(同样可用WinHttp.ResponseText返回HTML)
    Text2.Text = WinHttp.GetAllResponseHeaders                       '返回所有协议头
   
    Set WinHttp = Nothing
End Sub

Public Function BytesToBstr(strBody, CodeBase) '编码转换("UTF-8"或者"GB2312"或者"GBK")
    Dim ObjStream
    Set ObjStream = CreateObject("Adodb.Stream")
    With ObjStream
        .Type = 1
        .Mode = 3
        .Open
        .Write strBody
        .Position = 0
        .Type = 2
        .Charset = CodeBase
        BytesToBstr = .ReadText
        .Close
    End With
    Set ObjStream = Nothing
End Function

 
2021-09-10 19:28
醉清风425
Rank: 1
等 级:新手上路
帖 子:3
专家分:7
注 册:2021-9-10
收藏
得分:0 
回复 2楼 约定的童话
试了都不行,waitforresponse异步发送那一步报错,这个是要引用哪个库吗?
2021-09-11 17:28
约定的童话
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:4
帖 子:34
专家分:144
注 册:2021-8-1
收藏
得分:0 
回复 3楼 醉清风425
如果还不行,那就是邮件设置的问题了
2021-09-11 18:04
快速回复:求助一个发送请求的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.338861 second(s), 9 queries.
Copyright©2004-2021, BCCN.NET, All Rights Reserved