恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1243|回复: 7

软路由使用光速联网自动加速宽带脚本

  [复制链接]
发表于 2020-8-20 09:15 | 显示全部楼层 |阅读模式
本帖最后由 hubber83 于 2020-8-22 08:40 编辑

package main
import (
    "fmt"
    "net/http"
    "io/ioutil"
    "encoding/json"
    "bytes"
    "time"
    "os"
    "strconv"
)
type ProductDetail struct {
    Id int `json:"id"`
    IsValid string `json:"isValid"`
    OrderStatus int `json:"orderStatus"`
    OrderId string `json:"orderId"`
    ClassName string `json:"className"`
}
type ProductList struct{
    StatusCode bool `json:"statusCode"`
    List []ProductDetail `json:"list"`
}
type MsgData struct{
    Code int `json:"code"`
    Data string `json:"data"`
    Message string `json:"msg"`
}
func  main(){
    if len(os.Args)!=3 && len(os.Args)!=5 {
        fmt.Println("params error! egrogameName  userName  userPassword \nor egrogameName  userName  userPassword loop second")
        return
    }
    var loop bool=false
    var second int=0
    var userName string
    var userPassword string
    for i := range os.Args {
        if i==1 {
            userName=os.Args
        }
        if i== 2 {
            userPassword=os.Args
        }
        if i==3 && os.Args=="loop"{
            loop=true
        }
        if i==4 && loop {
            number,err := strconv.Atoi(os.Args)
            if err!=nil {
                fmt.Println("loop second error ! use number")
                return
            }
            second=number
        }
    }
    for{
        start(userName,userPassword)
            time.Sleep(time.Duration(second)*time.Minute)
        if loop==false {
            break
        }

    }
}
func start(userName string,userPassword string){
    loginByteData,err:= getLogin(userName,userPassword)
    if err!=nil {
        fmt.Println(err)
        return
    }
    var loginMsg MsgData
    json.Unmarshal(loginByteData, &loginMsg)
    if loginMsg.Code!=0{
        fmt.Println(loginMsg.Message)
        return
    }
    fmt.Println(loginMsg)
    var auth=loginMsg.Data
    productListByteData ,err2:=getProducetList(userName,auth)
    if err2!=nil {
        fmt.Println(err2)
        return
    }
    var productMsg MsgData
    json.Unmarshal(productListByteData, &productMsg)
    if productMsg.Code!=0 {
        fmt.Println(productMsg.Message)
        return
    }
    productMapData:=make(map[string]interface{})
    json.Unmarshal( productListByteData, &productMapData)
    productByteData ,_:=    json.Marshal((productMapData["data"].(map[string]interface{}))["orderDetail"])
    var productData ProductList
    json.Unmarshal(productByteData, &productData)
    if productData.StatusCode ==false {
        for _, item := range productData.List {
            if item.IsValid == "1" && item.OrderStatus == 1 {
                speedupByteData,err3:=getSpeedup(userName,auth,item.OrderId,item.ClassName)
                if err3!=nil{
                    fmt.Println(err3)
                    return
                }
                var speedMsg MsgData
                json.Unmarshal(speedupByteData, &speedMsg)
                if speedMsg.Code!=0 {
                    fmt.Println(speedMsg.Message)
                    return
                }
                break
            }
        }
    }
}
func getLogin(userName string,userPassword string)([]byte, error){
    body := make(map[string]interface{})
    body["userName"] = userName
    body["userPassword"] = userPassword
    head:=make(map[string]string)
    head["Accept"]="application/json, text/plain, */*"
    head["Content-Type"]="application/json;charset=UTF-8"
    return postInfo("https://www.fangyb.com:2039/biz/user/login.do",body,head)
}
func getProducetList(userName string,auth string)([]byte, error){
    body := make(map[string]interface{})
    body["userName"] = userName
    body["pageNo"] = 1
    body["pageSize"] = 10
    head:=make(map[string]string)
    head["Accept"]="application/json, text/plain, */*"
    head["Content-Type"]="application/json;charset=UTF-8"
    head["Authorization"]=auth
    return postInfo("https://www.fangyb.com:2039/biz/common/myOrder.action",body,head)
}
func getSpeedup(userName string,auth string,orderId string,className string)([]byte, error){
    body := make(map[string]interface{})
    body["userName"] = userName
    body["orderId"] = orderId
    body["className"] = className
    head:=make(map[string]string)
    head["Accept"]="application/json, text/plain, */*"
    head["Content-Type"]="application/json;charset=UTF-8"
    head["Authorization"]=auth
    return postInfo("https://www.fangyb.com:2039/biz/common/openSpeed.action",body,head)
}
func postInfo(url string,bodyMap map[string]interface{},headMap map[string]string)([]byte, error){
    client := &http.Client{}
    bytesData, _ := json.Marshal(bodyMap)
    payload := bytes.NewReader(bytesData)
    reqest, err := http.NewRequest("OST", url, payload)
    if err != nil {
        return nil,err
    }
    for k,v :=range headMap{
        reqest.Header.Add(k, v)
    }
    response, err2 := client.Do(reqest)
    if err2 != nil {
        fmt.Println(err2)
        return nil,err2
    }
    defer response.Body.Close()
    return  ioutil.ReadAll(response.Body)
}



https://github.com/jonyhubber/speedup

编译成x86_64命令 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" main.go
编译完后 传输到x86_64软路由 执行 nohup /传输路径/程序名 > /传输路径/程序名.txt 2>&1 &
也可以把上面那段话放在lede启动项exit0之前 每次重启 自动运行,第一次会加速失败,因为此时还没拨号,10分钟后就会加速成功
比如我的是
# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
nohup /root/speedup > /root/speedup.txt 2>&1 &
exit 0

我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-8-20 09:39 来自手机 | 显示全部楼层
什么神奇的东东?有啥效果?

点评

适合使用20兆的天天宽带用户使用,光速联网可以同时帮你把宽带的下行提速到200兆上行20兆,但是必须要8个小时点一次。这个脚本可以自动帮你提速  详情 回复 发表于 2020-8-20 09:45
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-8-20 09:45 | 显示全部楼层
mythos 发表于 2020-8-20 09:39
什么神奇的东东?有啥效果?

适合使用20兆的天天宽带用户使用,光速联网可以同时帮你把宽带的下行提速到200兆上行20兆,但是必须要8个小时点一次。这个脚本可以自动帮你提速
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-8-20 10:41 | 显示全部楼层
/root/speedup.txt是记录什么内容
2020-08-20 10-37-07屏幕截图.png
还有用户名这里是填宽带用户名吗 不能改成监听变量吗
原理是啥

不懂golang看不懂别见怪

点评

package main import ( "fmt" "net/http" "io/ioutil" "encoding/json" "bytes" "time" "os" "strconv" ) type ProductDetail struct { Id int `json:"id"` IsValid string `json:"isVali  详情 回复 发表于 2020-8-20 15:09
哦我也不是很懂go,花了5个小时写和测的。go不用额外安装环境就可以运行,并且能交叉编译,就是生成的文件比较大。用户名填光速联网的账号和网页加密后的密码。代码里有网址,去掉url后缀 ,用浏览器就可以打开  详情 回复 发表于 2020-8-20 11:16
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-8-20 11:16 | 显示全部楼层
401626436 发表于 2020-8-20 10:41
/root/speedup.txt是记录什么内容

还有用户名这里是填宽带用户名吗 不能改成监听变量吗

哦我也不是很懂go,花了5个小时写和测的。go不用额外安装环境就可以运行,并且能交叉编译,就是生成的文件比较大。用户名填光速联网的账号和网页加密后的密码。代码里有网址,去掉url后缀 ,用浏览器就可以打开
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-8-20 13:10 | 显示全部楼层
不知道光速联是什么,付费提速软件?现在用的网速管家那个,20m能提到500m,15块一个月还不错
来自苹果客户端来自苹果客户端
我的恩山、我的无线 The best wifi forum is right here.
 楼主| 发表于 2020-8-20 15:09 | 显示全部楼层
401626436 发表于 2020-8-20 10:41
/root/speedup.txt是记录什么内容

还有用户名这里是填宽带用户名吗 不能改成监听变量吗

package main
import (
    "fmt"
        "net/http"
        "io/ioutil"
        "encoding/json"
        "bytes"
        "time"
        "os"
        "strconv"
)
type ProductDetail struct {
        Id int `json:"id"`
        IsValid string `json:"isValid"`
        OrderStatus int `json:"orderStatus"`
        OrderId string `json:"orderId"`
        ClassName string `json:"className"`
}
type ProductList struct{
        StatusCode bool `json:"statusCode"`
        List []ProductDetail `json:"list"`
}
type MsgData struct{
        Code int `json:"code"`
        Data string `json:"data"`
        Message string `json:"msg"`
}
//nohup /root/speedup > /root/speedup.txt 2>&1 &
//CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" main.go

func  main(){
        if len(os.Args)!=3 && len(os.Args)!=5 {
                fmt.Println("params error! egrogameName  userName  userPassword \nor egrogameName  userName  userPassword loop second")
                return
        }
        var loop bool=false
        var second int=0
        var userName string
        var userPassword string
        for i := range os.Args {
                if i==1 {
                        userName=os.Args
                }
                if i== 2 {
                        userPassword=os.Args
                }
                if i==3 && os.Args=="loop"{
                        loop=true
                }
                if i==4 && loop {
                        number,err := strconv.Atoi(os.Args)
                        if err!=nil {
                                fmt.Println("loop second error ! use number")
                                return
                        }
                        second=number
                }
        }
        for{
                start(userName,userPassword)
                        time.Sleep(time.Duration(second)*time.Minute)
                if loop==false {
                        break
                }
               
    }
}
func start(userName string,userPassword string){
        loginByteData,err:=        getLogin(userName,userPassword)
        if err!=nil {
                fmt.Println(err)
                return
        }
        var loginMsg MsgData
        json.Unmarshal(loginByteData, &loginMsg)
        if loginMsg.Code!=0{
                fmt.Println(loginMsg.Message)
                return
        }
        fmt.Println(loginMsg)
        var auth=loginMsg.Data
        productListByteData        ,err2:=getProducetList(userName,auth)
        if err2!=nil {
                fmt.Println(err2)
                return
        }
        var productMsg MsgData
        json.Unmarshal(productListByteData, &productMsg)
        if productMsg.Code!=0 {
                fmt.Println(productMsg.Message)
                return
        }
        productMapData:=make(map[string]interface{})
        json.Unmarshal( productListByteData, &productMapData)
        productByteData ,_:=        json.Marshal((productMapData["data"].(map[string]interface{}))["orderDetail"])
        var productData ProductList
        json.Unmarshal(productByteData, &productData)
        if productData.StatusCode ==false {
                for _, item := range productData.List {
                        if item.IsValid == "1" && item.OrderStatus == 1 {
                                speedupByteData,err3:=getSpeedup(userName,auth,item.OrderId,item.ClassName)
                                if err3!=nil{
                                        fmt.Println(err3)
                                        return
                                }
                                var speedMsg MsgData
                                json.Unmarshal(speedupByteData, &speedMsg)
                                if speedMsg.Code!=0 {
                                        fmt.Println(speedMsg.Message)
                                        return
                                }
                                break
                        }
                }
        }
}
func getLogin(userName string,userPassword string)([]byte, error){
        body := make(map[string]interface{})
    body["userName"] = userName
        body["userPassword"] = userPassword
        head:=make(map[string]string)
        head["Accept"]="application/json, text/plain, */*"
        head["Content-Type"]="application/json;charset=UTF-8"
        return postInfo("https://www.fangyb.com:2039/biz/user/login.do",body,head)
}
func getProducetList(userName string,auth string)([]byte, error){
        body := make(map[string]interface{})
    body["userName"] = userName
        body["pageNo"] = 1
    body["pageSize"] = 10
        head:=make(map[string]string)
        head["Accept"]="application/json, text/plain, */*"
        head["Content-Type"]="application/json;charset=UTF-8"
        head["Authorization"]=auth
        return postInfo("https://www.fangyb.com:2039/biz/common/myOrder.action",body,head)
}
func getSpeedup(userName string,auth string,orderId string,className string)([]byte, error){
        body := make(map[string]interface{})
    body["userName"] = userName
    body["orderId"] = orderId
    body["className"] = className
        head:=make(map[string]string)
        head["Accept"]="application/json, text/plain, */*"
        head["Content-Type"]="application/json;charset=UTF-8"
        head["Authorization"]=auth
        return postInfo("https://www.fangyb.com:2039/biz/common/openSpeed.action",body,head)
}
func postInfo(url string,bodyMap map[string]interface{},headMap map[string]string)([]byte, error){
        client := &http.Client{}
        bytesData, _ := json.Marshal(bodyMap)
        payload := bytes.NewReader(bytesData)
        reqest, err := http.NewRequest("OST", url, payload)
        if err != nil {
                return nil,err
        }
        for k,v :=range headMap{
                reqest.Header.Add(k, v)
        }
        response, err2 := client.Do(reqest)
        if err2 != nil {
                fmt.Println(err2)
                return nil,err
        }
        defer response.Body.Close()
        return  ioutil.ReadAll(response.Body)
}

这个是传参来指定账号和密码 以及是否循环和按分钟循环
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-9-7 23:52 | 显示全部楼层
大佬能不能帮我弄下,我一直用的光速联每次8个小时要点击太麻烦了,红包感谢  我刷的是OpenWrt固件 联系Q490787872
我的恩山、我的无线 The best wifi forum is right here.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )|网站地图

GMT+8, 2020-9-25 11:05

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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