ログインフォームを使ってログインするようなページへのアクセ
Go-lang勉強。
ログインフォームのあるようなサイトにGo-langのhttpパッケージを使ってログインする。
ログインしたいのは Log in - Swipe。
フォームの情報送るにはPostForm使うと楽っぽいけど、今回は
- リファラを設定しないとログインさせてくれない
- cookieJar使ってログイン情報持ち回りたい
という背景があったので、PostFormだと上記が満たせない感じ。
なので、Request作ってフォームの情報はbodyに流し込む下記のような方法で。
package main import ( "net/http" "net/http/cookiejar" "io/ioutil" "bytes" ) func main() { cookieJar, _ := cookiejar.New(nil) client := &http.Client { Jar: cookieJar, } // Login to swipe.to var str = []byte("Email=hogehoge%40example.com&Password=foobar") req, _ := http.NewRequest("POST", "https://www.swipe.to/login", bytes.NewBuffer(str)) req.Header.Set("Referer", "https://www.swipe.to/home") req.Header.Set("Content-Type", "application/x-www-form-urlencoded") res, _ := client.Do(req) // Create New Doc req2, _ := http.NewRequest("POST", "https://www.swipe.to/edit/create", nil) req2.Header.Set("Referer", "https://www.swipe.to/home") res2, _ := client.Do(req2) body, _ := ioutil.ReadAll(res2.Body) defer res2.Body.Close() println(string(body)) }
なんか勘違いしてる感が拭えない。