32
Go 응용 프로그램을 특정 UserAgent
으로 지정하려고 시도하지만 net/http
과 함께이 작업을 수행하는 방법을 찾을 수 없습니다. http.Client
을 만들고 Get
요청을 만들 때 사용합니다 (client.Get()
통해).http 요청에 UserAgent 설정
클라이언트에 UserAgent
을 설정하는 방법이 있습니까?
Go 응용 프로그램을 특정 UserAgent
으로 지정하려고 시도하지만 net/http
과 함께이 작업을 수행하는 방법을 찾을 수 없습니다. http.Client
을 만들고 Get
요청을 만들 때 사용합니다 (client.Get()
통해).http 요청에 UserAgent 설정
클라이언트에 UserAgent
을 설정하는 방법이 있습니까?
요청을 사용 request.Header.Set("key", "value")
작성 :
package main
import (
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "http://httpbin.org/user-agent", nil)
if err != nil {
log.Fatalln(err)
}
req.Header.Set("User-Agent", "Golang_Spider_Bot/3.0")
resp, err := client.Do(req)
if err != nil {
log.Fatalln(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatalln(err)
}
log.Println(string(body))
}
결과 :
2012/11/07 15:05:47 {
"user-agent": "Golang_Spider_Bot/3.0"
}
P.S.을 http://httpbin.org은 이런 종류의 테스트에 놀랍습니다!
httpbin.org를 지적 해 주셔서 감사합니다. – kostix
리디렉션 후에 헤더를 사용하는 데 문제가 있습니다. 기본적으로 사용되지 않습니다. Client.CheckRedirect 필드에 사용자 지정 함수를 제공해야합니다. –
단지 "Golang Spider Bot v. 3.0"이 구문 상 정확한 반면, 아마도 당신이 원하는 것을 의미하지는 않는다는 것을 지적하고 싶습니다. 사양에 따르면 "Golang", "Spider", "Bot", "v."및 "3.0"의 5 가지 제품 토큰이 있음을 의미합니다. 더 정확한 것은 "Golang_Spider_Bot/3.0"입니다. 참조 : http://www.bizcoder.com/the-much-maligned-user-agent-header –