用golang重写SS帐号获取脚本
youerning · · 2791 次点击 · · 开始浏览聽 聽 Golang有个很酷的特性可以跨平台编译生成该平台的二进制可执行文件,虽然python也能通过其他工具生成相应平台的二进制文件,但是还是觉得太别扭了,通过golang写一次,然后生成相应平台的二进制文件而且没有依赖,多酷的事情。
聽 聽 这个ss帐号获取脚本干啥滴?
聽 聽 参考:http://youerning.blog.51cto.com/10513771/1852876
聽 聽 还在不断学习中,可能代码写得不够gopher。
聽 聽聽
聽 聽 首先安装依赖: 聽 聽
go聽get聽github.com/PuerkitoBio/goquery
go聽get聽github.com/skip2/go-qrcode
聽 聽 源码:
package聽main
import聽(
"encoding/base64"
"fmt"
"github.com/PuerkitoBio/goquery"
"github.com/skip2/go-qrcode"
"strings"
)
func聽strInSlice(a聽string,聽list聽[]string)聽bool聽{
for聽_,聽b聽:=聽range聽list聽{
if聽b聽==聽a聽{
return聽true
}
}
return聽false
}
func聽main()聽{
ssURL聽:=聽"http://www.ishadowsocks.org/"
page,聽err聽:=聽goquery.NewDocument(ssURL)
if聽err聽!=聽nil聽{
fmt.Println(err)
return
}
page.Find(".col-lg-4,.text-center").Each(func(i聽int,聽s聽*goquery.Selection)聽{
lis聽:=聽make([]string,聽4)
s.Find("h4").Each(func(i聽int,聽ss聽*goquery.Selection)聽{
txt聽:=聽ss.Text()
if聽i聽<聽4聽&&聽strings.Contains(txt,聽":")聽{
cont聽:=聽strings.Split(txt,聽":")[1]
lis[i]聽=聽cont
}
})
if聽strInSlice("aes-256-cfb",聽lis)聽{
fmt.Println(lis)
data1聽:=聽lis[3]聽+聽":"聽+聽lis[2]聽+聽"@"聽+聽lis[0]聽+聽":"聽+聽lis[1]
data2聽:=聽[]byte(data1)
enc聽:=聽base64.StdEncoding.EncodeToString(data2)
ret聽:=聽"ss://"聽+聽enc
fname聽:=聽lis[0]聽+聽".png"
qrcode.WriteFile(ret,聽qrcode.Medium,聽256,聽fname)
}
})
}保存文件为:ss.go
在本机执行:
go聽run聽ss.go
执行完成后,会在当前目录下生成三个png文件,怎么使用参考最上面的链接吧
生成当前环境的二进制文件:
go聽build聽ss.go
然后就会在当前文件夹生成同名的二进制文件了
生成相应环境的二进制文件,比如windows下是.exe文件:
linux
聽CGO_ENABLED=0聽GOOS=linux聽GOARCH=amd64聽go聽build
windows
CGO_ENABLED=0聽GOOS=windows聽GOARCH=amd64聽go聽build
moc os
CGO_ENABLED=0聽GOOS=windows聽GOARCH=amd64聽go聽build
聽 聽 后记:python开发还是很快的,但是golang也不差,再者golang的其它特性如goroutine,interface之类咱就不聊了,聊聊一个写小工具的心得。
聽 聽 二进制可执行文件真的那么重要么?
聽 聽 如果你写了一些小工具,又借助了很多的依赖包,当你放到其它平台必定是pip install -r 聽requirement 这还是可以忍受的,如果这些小工具需要放置到一些不能联网环境,那么就很难过了〜 有一个工具是pyinstaller还是不错滴,可还是不够优雅。
聽 聽聽
本文出自 "又耳笔记" 博客,请务必保留此出处http://youerning.blog.51cto.com/10513771/1859910
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
聽 聽 Golang有个很酷的特性可以跨平台编译生成该平台的二进制可执行文件,虽然python也能通过其他工具生成相应平台的二进制文件,但是还是觉得太别扭了,通过golang写一次,然后生成相应平台的二进制文件而且没有依赖,多酷的事情。
聽 聽 这个ss帐号获取脚本干啥滴?
聽 聽 参考:http://youerning.blog.51cto.com/10513771/1852876
聽 聽 还在不断学习中,可能代码写得不够gopher。
聽 聽聽
聽 聽 首先安装依赖: 聽 聽
go聽get聽github.com/PuerkitoBio/goquery
go聽get聽github.com/skip2/go-qrcode
聽 聽 源码:
package聽main
import聽(
"encoding/base64"
"fmt"
"github.com/PuerkitoBio/goquery"
"github.com/skip2/go-qrcode"
"strings"
)
func聽strInSlice(a聽string,聽list聽[]string)聽bool聽{
for聽_,聽b聽:=聽range聽list聽{
if聽b聽==聽a聽{
return聽true
}
}
return聽false
}
func聽main()聽{
ssURL聽:=聽"http://www.ishadowsocks.org/"
page,聽err聽:=聽goquery.NewDocument(ssURL)
if聽err聽!=聽nil聽{
fmt.Println(err)
return
}
page.Find(".col-lg-4,.text-center").Each(func(i聽int,聽s聽*goquery.Selection)聽{
lis聽:=聽make([]string,聽4)
s.Find("h4").Each(func(i聽int,聽ss聽*goquery.Selection)聽{
txt聽:=聽ss.Text()
if聽i聽<聽4聽&&聽strings.Contains(txt,聽":")聽{
cont聽:=聽strings.Split(txt,聽":")[1]
lis[i]聽=聽cont
}
})
if聽strInSlice("aes-256-cfb",聽lis)聽{
fmt.Println(lis)
data1聽:=聽lis[3]聽+聽":"聽+聽lis[2]聽+聽"@"聽+聽lis[0]聽+聽":"聽+聽lis[1]
data2聽:=聽[]byte(data1)
enc聽:=聽base64.StdEncoding.EncodeToString(data2)
ret聽:=聽"ss://"聽+聽enc
fname聽:=聽lis[0]聽+聽".png"
qrcode.WriteFile(ret,聽qrcode.Medium,聽256,聽fname)
}
})
}保存文件为:ss.go
在本机执行:
go聽run聽ss.go
执行完成后,会在当前目录下生成三个png文件,怎么使用参考最上面的链接吧
生成当前环境的二进制文件:
go聽build聽ss.go
然后就会在当前文件夹生成同名的二进制文件了
生成相应环境的二进制文件,比如windows下是.exe文件:
linux
聽CGO_ENABLED=0聽GOOS=linux聽GOARCH=amd64聽go聽build
windows
CGO_ENABLED=0聽GOOS=windows聽GOARCH=amd64聽go聽build
moc os
CGO_ENABLED=0聽GOOS=windows聽GOARCH=amd64聽go聽build
聽 聽 后记:python开发还是很快的,但是golang也不差,再者golang的其它特性如goroutine,interface之类咱就不聊了,聊聊一个写小工具的心得。
聽 聽 二进制可执行文件真的那么重要么?
聽 聽 如果你写了一些小工具,又借助了很多的依赖包,当你放到其它平台必定是pip install -r 聽requirement 这还是可以忍受的,如果这些小工具需要放置到一些不能联网环境,那么就很难过了〜 有一个工具是pyinstaller还是不错滴,可还是不够优雅。
聽 聽聽
本文出自 "又耳笔记" 博客,请务必保留此出处http://youerning.blog.51cto.com/10513771/1859910