临时修改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,后面会有专门的一节进行介绍。