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的改动是导致我下面一步进入业务逻辑提交页面提示登录超时的原因。不知我的想法是否正确,还有问题如何解决呢?

有疑问加站长微信联系(非本文作者)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值