我将用较新的 4.8.1 版本的 HttpClient 替换旧的 httpwebrequest。主要是为了让异步能够发挥作用。
我不太擅长建立cookies的语法,感觉是在摸黑。
有人可以帮我添加什么声明吗?我试图阅读的一些网站要求对其进行设置。
Using client As HttpClient = New HttpClient()
client.Timeout = TimeSpan.FromSeconds(3)
'HEADERS & SETTINGS
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/117.0")
client.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8")
client.DefaultRequestHeaders.Add("Accept-Language", "en-US,en;q=0.5")
client.DefaultRequestHeaders.Add("Upgrade-Insecure-Requests", "1")
client.DefaultRequestHeaders.Add("SEC-FETCH-DEST", "document")
client.DefaultRequestHeaders.Add("SEC-FETCH-MODE", "navigate")
client.DefaultRequestHeaders.Add("Referer", "https://www.somesite.com/")
' an attempt here
'Dim cookies As CookieContainer = New CookieContainer()
'Dim handler As HttpClientHandler = New HttpClientHandler()
'handler.CookieContainer = cookies
Using response As HttpResponseMessage = Await client.GetAsync(page)
Using content As HttpContent = response.Content
' Get contents of page as a String.
result = Await content.ReadAsStringAsync()
End Using
End Using
End Using
cookie 的目的是允许它们在多个请求和会话中持续存在。这意味着您不想在每个请求上创建一个全新的 cookie 容器,就像使用 HttpClient 一样。相反,尽早创建一个并保留引用以便一次又一次使用,就像您可能使用
Random
实例一样。