m 1 month ago
parent
commit
d8765ca027
3 changed files with 96 additions and 100 deletions
  1. 0 97
      common/login-js/vm.go
  2. 94 0
      common/lxhttp/http_tax.go
  3. 2 3
      login/method.go

+ 0 - 97
common/login-js/vm.go

@@ -1,16 +1,8 @@
 package login_js
 
 import (
-	"encoding/json"
 	"fmt"
-	"git.listensoft.net/tool/jspkit/common/lxhttp"
-	"git.listensoft.net/tool/jspkit/logger"
 	"github.com/robertkrimen/otto"
-	"github.com/tidwall/gjson"
-	"io/ioutil"
-	"net/http"
-	"net/url"
-	"strings"
 )
 
 func Js(fn string, args ...interface{}) interface{} {
@@ -44,92 +36,3 @@ func Test2(fn string) interface{} {
 	res, _ := value.Export()
 	return res
 }
-
-func Get_etax_clientId_redirectUri(C *http.Client, Api string, fuc func(url string) (ck []*http.Cookie, uri string)) map[string]interface{} {
-	Location := ""
-	f := 0
-begin:
-	var ck []*http.Cookie
-	ck, Api = fuc(Api)
-	if len(ck) != 0 {
-		u, _ := url.Parse(Api)
-		C.Jar.SetCookies(u, ck)
-	}
-	// 创建一个新的 HTTP 请求
-	req, err := http.NewRequest("GET", Api, nil)
-	if err != nil {
-		fmt.Println("Error creating request:", err)
-
-	}
-	req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36")
-	req.Header.Set("Accept", "application/json, text/plain, */*")
-	if strings.Contains(Api, "invoice-query/invoice-query") {
-		req.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7")
-		req.Header.Set("Accept-Encoding", "gzip, deflate, br, zstd")
-		req.Header.Set("Accept-Language", "zh-CN,zh;q=0.9")
-		//req.Header.Set("Referer", "https://etax.hebei.chinatax.gov.cn:8443/")
-		//req.Header.Set("Host", "dppt.hebei.chinatax.gov.cn:8443")
-	}
-	nn := 0
-n:
-	// 发送请求
-	resp, err := C.Do(req)
-	if err != nil {
-		logger.Info("Error sending request:" + err.Error())
-		if nn < 6 {
-			nn++
-			goto n
-		}
-		return nil
-	}
-	defer resp.Body.Close()
-	body, _ := ioutil.ReadAll(resp.Body)
-	fmt.Println(string(body))
-	Location = resp.Header.Get(`Location`)
-	fmt.Println("Location:", Location)
-	if Location == "" {
-		return nil
-	}
-	if f == 0 {
-		Api = Location
-		f++
-		goto begin
-	}
-	res := Js("clientId", Location)
-	return res.(map[string]interface{})
-}
-
-func VerifyLogin(c *http.Client, area, BaseIndex string, client_id, redirect_uri, new_key16 string, header map[string]string, fuc func(url string) (ck []*http.Cookie, uri string)) string {
-	var jsonAny []byte
-	var err error
-	uri := fmt.Sprintf("https://tpass.%s.chinatax.gov.cn:8443/sys-api/v1.0/auth/user/verifyLogin", area)
-	ck, _ := fuc(uri)
-	if len(ck) > 0 {
-		u, _ := url.Parse(uri)
-		c.Jar.SetCookies(u, ck)
-	}
-	n := map[string]interface{}{
-		"data": map[string]string{
-			"client_id":    client_id,
-			"redirect_uri": redirect_uri,
-		},
-		"url":    "/auth/user/verifyLogin",
-		"method": "post",
-	}
-	param_datas := Js("signature", n, new_key16)
-	for range ".........." {
-		jsonAny, err = lxhttp.POSTJsonAny(c, uri, param_datas, header)
-		if err != nil {
-			continue
-		} else {
-			break
-		}
-	}
-	/// {"code" : 1000,"msg" : "处理成功!","zipCode" : "0","encryptCode" : "2","datagram" : "610695f2eb65a0eb961cf80c3a69f9777b8282c41fbecf238500d3c670fb8d5298fdcd4929f62c6c601d1a4c07563073","signtype" : "HMacSHA256", "signature" : "8B0CF4EE45C7FF0398BDB0D3946D91960E26017448DC91BE928256DC417307E8","timestamp" : "20241004114508","requestId" : "f551b69773a75535"}
-	var jsonAny2 map[string]interface{}
-	json.Unmarshal([]byte(jsonAny), &jsonAny2)
-	responseJson := Js("responseParse", jsonAny2, new_key16)
-	//{"code":"","datagram":"{\"code\":\"3D384374310C458E8DFF9B979E3D8FFB\"}","encryptCode":"2","msg":"处理成功!","requestId":"86ba5db97beff424","signature":"DE3ECA4D94F8C293CDB1695E5648904CACCABCBF998AD2F6188DF2988F67F4D9","signtype":"HMacSHA256","timestamp":"20241004120553","zipCode":"0"}
-	responseJson2 := responseJson.(map[string]interface{})
-	return gjson.Get(responseJson2["datagram"].(string), "code").String()
-}

+ 94 - 0
common/lxhttp/http_tax.go

@@ -4,12 +4,17 @@ import (
 	"bytes"
 	"crypto/tls"
 	"encoding/base64"
+	"encoding/json"
+	"fmt"
+	login_js "git.listensoft.net/tool/jspkit/common/login-js"
 	Rsvmp "git.listensoft.net/tool/jspkit/common/rsvmp"
 	"git.listensoft.net/tool/jspkit/logger"
 	"git.listensoft.net/tool/jspkit/taxerr"
+	"github.com/tidwall/gjson"
 	"go.uber.org/zap"
 	"golang.org/x/net/publicsuffix"
 	"io"
+	"io/ioutil"
 	"net/http"
 	"net/http/cookiejar"
 	"net/url"
@@ -143,3 +148,92 @@ func AutoHttp(client *http.Client, uri string, Method string, bytesData []byte,
 	}
 	return
 }
+
+func Get_etax_clientId_redirectUri(C *http.Client, Api string, fuc func(url string) (ck []*http.Cookie, uri string)) map[string]interface{} {
+	Location := ""
+	f := 0
+begin:
+	var ck []*http.Cookie
+	ck, Api = fuc(Api)
+	if len(ck) != 0 {
+		u, _ := url.Parse(Api)
+		C.Jar.SetCookies(u, ck)
+	}
+	// 创建一个新的 HTTP 请求
+	req, err := http.NewRequest("GET", Api, nil)
+	if err != nil {
+		fmt.Println("Error creating request:", err)
+
+	}
+	req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36")
+	req.Header.Set("Accept", "application/json, text/plain, */*")
+	if strings.Contains(Api, "invoice-query/invoice-query") {
+		req.Header.Set("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7")
+		req.Header.Set("Accept-Encoding", "gzip, deflate, br, zstd")
+		req.Header.Set("Accept-Language", "zh-CN,zh;q=0.9")
+		//req.Header.Set("Referer", "https://etax.hebei.chinatax.gov.cn:8443/")
+		//req.Header.Set("Host", "dppt.hebei.chinatax.gov.cn:8443")
+	}
+	nn := 0
+n:
+	// 发送请求
+	resp, err := C.Do(req)
+	if err != nil {
+		logger.Info("Error sending request:" + err.Error())
+		if nn < 6 {
+			nn++
+			goto n
+		}
+		return nil
+	}
+	defer resp.Body.Close()
+	body, _ := ioutil.ReadAll(resp.Body)
+	fmt.Println(string(body))
+	Location = resp.Header.Get(`Location`)
+	fmt.Println("Location:", Location)
+	if Location == "" {
+		return nil
+	}
+	if f == 0 {
+		Api = Location
+		f++
+		goto begin
+	}
+	res := login_js.Js("clientId", Location)
+	return res.(map[string]interface{})
+}
+
+func VerifyLogin(c *http.Client, area, BaseIndex string, client_id, redirect_uri, new_key16 string, header map[string]string, fuc func(url string) (ck []*http.Cookie, uri string)) string {
+	var jsonAny []byte
+	var err error
+	uri := fmt.Sprintf("https://tpass.%s.chinatax.gov.cn:8443/sys-api/v1.0/auth/user/verifyLogin", area)
+	ck, _ := fuc(uri)
+	if len(ck) > 0 {
+		u, _ := url.Parse(uri)
+		c.Jar.SetCookies(u, ck)
+	}
+	n := map[string]interface{}{
+		"data": map[string]string{
+			"client_id":    client_id,
+			"redirect_uri": redirect_uri,
+		},
+		"url":    "/auth/user/verifyLogin",
+		"method": "post",
+	}
+	param_datas := login_js.Js("signature", n, new_key16)
+	for range ".........." {
+		jsonAny, err = POSTJsonAny(c, uri, param_datas, header)
+		if err != nil {
+			continue
+		} else {
+			break
+		}
+	}
+	/// {"code" : 1000,"msg" : "处理成功!","zipCode" : "0","encryptCode" : "2","datagram" : "610695f2eb65a0eb961cf80c3a69f9777b8282c41fbecf238500d3c670fb8d5298fdcd4929f62c6c601d1a4c07563073","signtype" : "HMacSHA256", "signature" : "8B0CF4EE45C7FF0398BDB0D3946D91960E26017448DC91BE928256DC417307E8","timestamp" : "20241004114508","requestId" : "f551b69773a75535"}
+	var jsonAny2 map[string]interface{}
+	json.Unmarshal([]byte(jsonAny), &jsonAny2)
+	responseJson := login_js.Js("responseParse", jsonAny2, new_key16)
+	//{"code":"","datagram":"{\"code\":\"3D384374310C458E8DFF9B979E3D8FFB\"}","encryptCode":"2","msg":"处理成功!","requestId":"86ba5db97beff424","signature":"DE3ECA4D94F8C293CDB1695E5648904CACCABCBF998AD2F6188DF2988F67F4D9","signtype":"HMacSHA256","timestamp":"20241004120553","zipCode":"0"}
+	responseJson2 := responseJson.(map[string]interface{})
+	return gjson.Get(responseJson2["datagram"].(string), "code").String()
+}

+ 2 - 3
login/method.go

@@ -5,7 +5,6 @@ import (
 	"crypto/tls"
 	"fmt"
 	"git.listensoft.net/tool/jspkit/common"
-	login_js "git.listensoft.net/tool/jspkit/common/login-js"
 	"git.listensoft.net/tool/jspkit/common/lxhttp"
 	"git.listensoft.net/tool/jspkit/common/models"
 	Rsvmp "git.listensoft.net/tool/jspkit/common/rsvmp"
@@ -177,7 +176,7 @@ begin:
 		"Authorization":   token,
 	}
 	logger.Info("埋点1")
-	rst := login_js.Get_etax_clientId_redirectUri(client, api, RsCookie)
+	rst := lxhttp.Get_etax_clientId_redirectUri(client, api, RsCookie)
 	logger.Info("埋点2")
 	if rst == nil {
 		return
@@ -186,7 +185,7 @@ begin:
 	client_id := rst["client_id"].(string)
 	redirect_uri := rst["redirect_uri"].(string)
 	redirect_uri, _ = url.QueryUnescape(redirect_uri)
-	code := login_js.VerifyLogin(client, area, BaseIndex, client_id, redirect_uri, new_key16, headers, RsCookie)
+	code := lxhttp.VerifyLogin(client, area, BaseIndex, client_id, redirect_uri, new_key16, headers, RsCookie)
 	logger.Info("埋点4")
 	queryParams := url.Values{}
 	queryParams.Add("code", code)