立即注册  找回密码
 立即注册
CeraNetworksBGVM服务器主机交流会员请立即修改密码Sharktech防护
查看: 54|回复: 6

go语言签到,完善一些问题

[复制链接]

go语言签到,完善一些问题

[复制链接]

5

主题

50

回帖

231

积分

中级会员

积分
231
waini1110

5

主题

50

回帖

231

积分

中级会员

积分
231
2018-6-9 22:54:57 | 显示全部楼层 |阅读模式
本帖最后由 waini1110 于 2018-6-9 22:56 编辑

编译好了之后,把user.json扔进二进制同级目录。

user.json 内容:

[ol]
  • {
  •     "username": "username",
  •     "password": "password"
  • }[/ol]复制代码

    下面是go代码,做了判断,并发10次访问,不知道会不会被block掉。

    [ol]
  • package main
  • import (
  •         "encoding/json"
  •         "fmt"
  •         "io/ioutil"
  •         "math/rand"
  •         "net/http"
  •         "net/http/cookiejar"
  •         "os"
  •         "regexp"
  •         "strconv"
  •         "strings"
  •         "time"
  •         "github.com/PuerkitoBio/goquery"
  • )
  • var (
  •         LoginUrl = "https://www.hs2v.com/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1"
  • )
  • type User struct {
  •         Username string `json:username`
  •         Password string `json:password`
  • }
  • type Client struct {
  •         Client   *http.Client
  •         Integral int
  •         Ch       chan string
  •         User
  • }
  • func (c *Client) Login() {
  •         jar, err := cookiejar.New(nil)
  •         if err != nil {
  •                 fmt.Printf("cookie error:%s", err)
  •         }
  •         c.Client.Jar = jar
  •         req, err := http.NewRequest("POST", LoginUrl, strings.NewReader("username="+c.User.Username+"&password="+c.User.Password))
  •         if err != nil {
  •                 fmt.Printf("httpRequest error:\r\n", err)
  •                 os.Exit(1)
  •         }
  •         req.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8")
  •         req.Header.Set("Accept-Language", "zh-CN,zh;q=0.9")
  •         req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36")
  •         req.Header.Set("Host", "www.hs2v.com")
  •         req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
  •         resp, _ := c.Client.Do(req)
  •         defer resp.Body.Close()
  •         doc, err := goquery.NewDocumentFromResponse(resp)
  •         if err != nil {
  •                 fmt.Printf("Parsing HTML error%s:\r\n", err)
  •                 os.Exit(1)
  •         }
  •         html, _ := doc.Html()
  •         if ok := strings.Contains(html, "登录失败"); ok {
  •                 fmt.Printf("Login failure\r\n")
  •                 os.Exit(1)
  •         }
  •         c.Visit()
  • }
  • func (c *Client) Visit() {
  •         r := rand.New(rand.NewSource(time.Now().UnixNano()))
  •         for x := 0; x  c.Integral {
  •                         c.Integral = a
  •                 }
  •                 fmt.Println(c.Integral)
  •         }
  •         resp, err := c.Client.Get("https://www.hs2v.com/forum.php")
  •         defer resp.Body.Close()
  •         if err != nil {
  •                 fmt.Printf("visit error:%s\r\n", err)
  •                 os.Exit(1)
  •         }
  •         doc, err := goquery.NewDocumentFromResponse(resp)
  •         if err != nil {
  •                 fmt.Printf("Parsing HTML error:%s\r\n", err)
  •                 os.Exit(1)
  •         }
  •         fmt.Printf("your Integral is: %s\r\n", doc.Find("#extcreditmenu").Text())
  • }
  • func main() {
  •         var user User
  •         data, err := ioutil.ReadFile("user.json")
  •         if err != nil {
  •                 fmt.Printf("read file faild:%s", err)
  •         }
  •         json.Unmarshal(data, &user)
  •         client := Client{
  •                 Client:   &http.Client{},
  •                 Integral: 0,
  •                 Ch:       make(chan string, 1),
  •                 User:     user,
  •         }
  •         client.Login()
  •         fmt.Println("Closed after 5 seconds")
  •         time.Sleep(5 * time.Second)
  • }
  • [/ol]复制代码

  • 回复

    使用道具 举报

    136

    主题

    1003

    回帖

    3971

    积分

    论坛元老

    积分
    3971
    安之若素

    136

    主题

    1003

    回帖

    3971

    积分

    论坛元老

    积分
    3971
    2018-6-9 22:56:00 | 显示全部楼层
    大佬牛逼。go看着挺复杂啊
    回复

    使用道具 举报

    113

    主题

    543

    回帖

    2735

    积分

    金牌会员

    积分
    2735
    fei2018

    113

    主题

    543

    回帖

    2735

    积分

    金牌会员

    积分
    2735
    2018-6-9 23:10:52 | 显示全部楼层


    我也刚学了段时间golang,写了个golang刷分脚本,还不够完美不敢放出来,被楼主抢先一步了
    回复

    使用道具 举报

    23

    主题

    1358

    回帖

    4244

    积分

    论坛元老

    积分
    4244
    notmya

    23

    主题

    1358

    回帖

    4244

    积分

    论坛元老

    积分
    4244
    2018-6-9 23:16:14 | 显示全部楼层
    所以现在有多少语言版本了?
    回复

    使用道具 举报

    11

    主题

    707

    回帖

    2342

    积分

    金牌会员

    积分
    2342
    忘江湖

    11

    主题

    707

    回帖

    2342

    积分

    金牌会员

    积分
    2342
    2018-6-9 23:44:55 | 显示全部楼层
    果然PHP才是最好的语言,语法优美,简洁易懂。go语言看着又长又复杂
    回复

    使用道具 举报

    5

    主题

    50

    回帖

    231

    积分

    中级会员

    积分
    231
    waini1110 楼主

    5

    主题

    50

    回帖

    231

    积分

    中级会员

    积分
    231
    2018-6-9 23:52:19 | 显示全部楼层

    安之若素 发表于 2018-6-9 22:56

    大佬牛逼。go看着挺复杂啊

    不是很复杂,我写的比较多而已。真要写的话,也只是一个函数的事情。
    回复

    使用道具 举报

    5

    主题

    50

    回帖

    231

    积分

    中级会员

    积分
    231
    waini1110 楼主

    5

    主题

    50

    回帖

    231

    积分

    中级会员

    积分
    231
    2018-6-9 22:56:00 | 显示全部楼层

    fei2018 发表于 2018-6-9 23:10

    我也刚学了段时间golang,写了个golang刷分脚本,还不够完美不敢放出来,被楼主抢先一步了 ...

    没关系,写好了就放出来呗,就当coding review了
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|小黑屋|HS2V主机综合交流论坛

    GMT+8, 2024-11-22 22:39 , Processed in 0.069418 second(s), 4 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表