go模拟android浏览器,模拟浏览器登录操作
近來想用Go做一點事,以減輕工作上的負擔。
我的工作中有幾項工作是每日重復的,大致內容:
1、將數據收集到Excel中。
2、收集齊后,將Excel中的部分數據提交到辦公系統中(網頁上操作)。
3、再將提交過后的審批號碼提取出來,存入Excel中。
我現在有兩個問題:
1、現在,上面的第一步Excel操作,Go中不知有何現成的庫,若沒有,我有個效率不高的辦法。這個問題倒還不算急。
2、第二個問題比較著急。向辦公系統提交數據,得先登錄。我的操作步驟如下:
2.1、先訪問辦公系統首頁,獲取Session的Cookie。
2.2、進行登錄數據提交,將剛才獲取的這個Session的Cookie一并提交上去。
2.3、進行業務數據提交。
我現在的問題卡在上面的2.2步了。
測試期間,登錄操作完后,我進入業務邏輯提交頁面,可系統反饋登陸超時。后抓包中看到:
1、在我登錄驗證成功后,服務器返回了一個30X狀態碼。
2、http包直接幫我轉入了登錄成功后的頁面,返回的Body是跳轉后的頁面代碼。我的User-Agent在http幫我跳轉時改動了,改為了"Go 1.1 package http"了。
我的登錄代碼邏輯大概是這樣:
```go
import (
"net/http"
"log"
)
c := &http.Client{}
// sUrl 是登錄驗證頁面地址
// v中是登錄帳號、密碼等內容
req, err := http.NewRequest("POST", sUrl, v)
// 將之前文字描述 2.1 步驟中的Session Cookie一并發送到服務端
for _, v := range aCookies {
req.AddCookie(v)
}
// 一系列Header設置省略
// 其中下面這條是將User-Agent設置為我正常操作辦公系統時使用的瀏覽器的標識
req.Header.Set("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)")
// 執行登錄操作
res, err := c.Do(req)
if nil != err {
log.Fatal(err)
}
// 將返回的Cookie保留下來,下次操作使用
aCookies = res.Cookies()
```
我認為User-Agent的改動是導致我下面一步進入業務邏輯提交頁面提示登錄超時的原因。不知我的想法是否正確,還有問題如何解決呢?
有疑問加站長微信聯系(非本文作者)
總結
以上是生活随笔為你收集整理的go模拟android浏览器,模拟浏览器登录操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用python画枫叶-Python中的用
- 下一篇: 【Go实战基础】程序里面数据是如何显示到