日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

go模拟android浏览器,模拟浏览器登录操作

發布時間:2023/12/20 HTML 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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浏览器,模拟浏览器登录操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。