我正在尝试模拟浏览器,打开 Intranet url 并获取状态码 401。如何使用 ntl auth 或登录打开 url,通过?
谢谢
package main
import (
"gopkg.in/headzoo/surf.v1"
"fmt"
)
func main() {
bow := surf.NewBrowser()
bow.AddRequestHeader("Accept", "text/html")
bow.AddRequestHeader("Accept-Charset", "utf8")
err := bow.Open(url)
if err != nil {
panic(err)
}
fmt.Println(bow.StatusCode())
}
最佳答案
How to open url with ntl auth or login, pass? Thanks
1. Oh sorry, ntl is NTLM 2. Server authenticate me "transparently"
我将假设用户已针对 AD 域进行身份验证。
第一个 - NTLM协议(protocol)并不像例如那么简单基本认证。它是一个涉及一些系统/用户特定数据的多步骤协议(protocol)。客户端和服务器需要在协商 HTTP header 中交换一些质询/答案数据。
我建议使用开箱即用的库;例如 go-ntlmssp或 gokrb5 .
注意:使用 SPNEGO(NTLM over HTTP)身份验证时,根据 AD 设置,如果用户/服务主体的角色过多,协商 HTTP header 可能会变得非常大。如果您对 HTTP header 有任何默认限制,您可以查看是否未达到限制。
关于go - 如何使用 NTLM 身份验证打开浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58390767/