这几天折腾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()
}

标签: none

添加新评论

*如果只是需要与我沟通联系,请telegram @ohyessure, 而不要用评论方式,因为没有你的个人资料,我无法回复及联络你。