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

暂无评论

添加新评论