Typecho的一个小工具
这几天折腾typecho中,当然,免不了折腾些小工具,昨晚花了一个晚上捣鼓几行代码,晕得很,不过总算成了。
它的功能是找到评论页里的csrf token,然后提交一个请求,懂的自然懂,用处不解释了。
import "github.com/dop251/goja"
....
tokenRe := regexp.MustCompile(`input\.value[\s\S]*?\(\);\s*`)
tokenScriptMatch := tokenRe.FindStringSubmatch(string(commentBody))
var token string
var formData url.Values
if len(tokenScriptMatch) > 0 {
js := tokenScriptMatch[0][14:]
token = executeJS(js)
fmt.Println("Found token:", token)
formData = url.Values{
"author": {author},
"mail": {mail},
"url": {postURL},
"text": {text},
"_": {token},
}
} else {
fmt.Println("No token found in the comment page.")
formData = url.Values{
"author": {author},
"mail": {mail},
"url": {postURL},
"text": {text},
}
}
....
func executeJS(jsCode string) string {
vm := goja.New()
val, err := vm.RunString(jsCode)
if err != nil {
fmt.Println("Error executing JavaScript:", err)
return ""
}
return val.String()
}