临时修改Cookie

Cookies也是请求头的一部分,所以我们可在WebResourceRequested事件读取 和修改Cookies。

在WebResourceRequested事件增加、删除和修改Cookies的参考代码如下:

Dim url As String = e.Request.Uri.ToLower() '获得要访问的资源路径并转为小写,方便比较
If
url.Contains("httpbin.org") Then '针对特定域名设置
   
'删除原来的Cookies
    e.Request.Headers.RemoveHeader(
"Cookie")
   
'直接设置Cookies,会覆盖原来的Cookie
    e.Request.Headers.SetHeader(
"Cookie", "session_id=abc123; user_token=xyz789; language=zh-CN")
   
'追加Cookies(保留原有的)
   
If e.Request.Headers.Contains("Cookie") Then
        
Dim cookies As String = e.Request.Headers.GetHeader("Cookie")
        e.Request.Headers.SetHeader(
"Cookie", cookies + "; custom_cookie=myvalue")
   
Else
        e.Request.Headers.SetHeader(
"Cookie", "custom_cookie=myvalue")
   
End If
End
If

如果要修改指定名称的cookie,可以参考:

Dim url As String = e.Request.Uri.ToLower() '获得要访问的资源路径并转为小写,方便比较
If
url.Contains("httpbin.org") Then '针对特定域名设置
       
Dim dic As New Dictionary(Of String, String)
       
If e.Request.Headers.Contains("Cookie") Then
           
Dim cookies As String = e.Request.Headers.GetHeader("Cookie")
           
For Each cookie As String In cookies.Split(";"c)
               
Dim parts() As String = cookie.Trim().Split("="c)
               
If parts.Length = 2 Then
                    dic.Add(parts(0).Trim(), parts(1).Trim())
               
End If
               
Next
       
End If
        dic(
"username") = "value1" '有则修改,无则增加
        dic(
"password") = "value2"
       
Dim newCookie As String = ""
       
For Each key As String In dic.Keys
            newCookie = newCookie & key &
"=" & dic(key) & ";"
       
Next
        e.Request.Headers.SetHeader(
"Cookie", newCookie.Trim(";"))
        e.Form.Text = newCookie
        Output.Show(newCookie)

End
If

你可以访问下面的网址检测修改结果:

https://httpbin.org/headers

提示:在WebResourceRequested增加或修改Cookies是一次性的,是临时的,如果要进行全局Cookies管理,可以使用CookieManager,后面会有专门的一节进行介绍。


本页地址:http://www.foxtable.com/webhelp/topics/6217.htm