Packtpub 에서 무료책을 매일 제공하고 있는데 이 책을 받기 위해서 매번 들어가기가 구찮았다, 그러다가 python 이라는 언어를 접하게 되고 python3 로 자동으로 접속해서 구매하는 것을 한번 만들어 보았다.
그러다가 Go언어를 통해서 구현해 보면 어떨까해서 만들어 보았습니다.
python3 에서는 로그인 유지처리를 웹에 글이 많아서 찾을 수 있었는데, golang 의 session, cookie 유지는 어떻게 하는지 찾을 수 없었습니다.
그래서 golang.org 에서 제공하는 API 문서를 보고 한번 만들어 봤습니다.
python3 에서 cookie jar 를
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
로 연결을 해서 cookie 관리가 편하게 하는 것을 보고 한번 따라 해 봤습니다.
덕분에 http 연결에 대해서 공부하게 되었습니다. request, response 정말 어렵습니다. 알면 알 수록 모르겠습니다. 고수분들은 단박에 해결할 수 있었겠죠?
cookieJar 객체를 생성
cookieJar, err := cookiejar.New(nil)
http.Client 에 cookie 연결
client := &http.Client{Jar:cookieJar}
Request 로 보낸 자신의 계정 정보를 생성합니다
value := url.Value{}
value.Add(“email”, 이메일)
value.Add(“password”,비밀번호)
value.Add(“op”,”Login”)
value.Add("form_id", "packt_user_login_form")
post 보낼때는 utf–8로 인코딩을 하셔야 합니다.
python2에서 python3로 변하면서도 utf–8 로 인코딩을 해야 값이 제대라 전달이 되는데, 이건 왜 그런지.
잘 모르겠어요.
로그인 하기
이제 client로 이용할 request 객체를 생성합니다.
req, _ := http.NewRequest("POST", “https://packpub.com”, strings.NewReader(value.Encode()))
req.Header.Add("User-Agent", "Mozilla/5.0")
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
client를 이용해서 request 하면 됩니다.
res, _ := client.Do(req)
이제 client 객체를 이용해서 post. get 을 이용하면 접속한 상태로 페이지를 이동할 수 있습니다.
반응형
'개발 > Golang' 카테고리의 다른 글
GO | golang 1.9 update (0) | 2017.09.06 |
---|---|
Golang | 최신버전으로 업그레이드 할 때 주의점 (0) | 2016.08.23 |
golang | strings 패키지 (0) | 2016.08.12 |
[Golang] mysql, mariadb 원격접속 허용하기 (0) | 2016.07.29 |
Golang 에 유용한 IDE 에디터 (0) | 2016.07.20 |