|
@@ -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()
|
|
|
+}
|