+ APICookie
This commit is contained in:
@@ -34,6 +34,8 @@ type ResponseResult struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type API struct {
|
type API struct {
|
||||||
|
platformapi.APICookie
|
||||||
|
|
||||||
source string
|
source string
|
||||||
secret string
|
secret string
|
||||||
encrypt string
|
encrypt string
|
||||||
|
|||||||
@@ -34,8 +34,8 @@ func init() {
|
|||||||
// 京西果园
|
// 京西果园
|
||||||
// api = New("35957", "10013fbb7c2ddad7")
|
// api = New("35957", "10013fbb7c2ddad7")
|
||||||
|
|
||||||
api.SetStoreCookie("WMUSS", "4AAPQCAAB5PF0aUGcBVzoRTCEkOFhFIhx-Yk9vN2EfPHYoLlROKBEsQmAUQjhNUgRt0ADAP5x-RFklwAAdjxGO11iOj8xKXYSSDIJb2BcPghsaklNfQwGS10JOVRFfhAiYElhEXFXIzoJKyloCGdwdFE6Qk9FRxojUFN3FVEHNjJPZJu4Bt9nxQ13cwoMbjA")
|
api.SetCookie("WMUSS", "4AAPQCAAB5PF0aUGcBVzoRTCEkOFhFIhx-Yk9vN2EfPHYoLlROKBEsQmAUQjhNUgRt0ADAP5x-RFklwAAdjxGO11iOj8xKXYSSDIJb2BcPghsaklNfQwGS10JOVRFfhAiYElhEXFXIzoJKyloCGdwdFE6Qk9FRxojUFN3FVEHNjJPZJu4Bt9nxQ13cwoMbjA")
|
||||||
api.SetStoreCookie("WMSTOKEN", "AcAANQZAABbC04rUBZFc2UYanlocDAaP0dcfzZCeS1SHQ1qJ15ExgAA13A2dGLjdbcitBZJu4Bn6B_g6cZAAA0tyyFm8cdBaNAQAAwug8HTG0xRjwt1UZzbcAAN7ofRO")
|
api.SetCookie("WMSTOKEN", "AcAANQZAABbC04rUBZFc2UYanlocDAaP0dcfzZCeS1SHQ1qJ15ExgAA13A2dGLjdbcitBZJu4Bn6B_g6cZAAA0tyyFm8cdBaNAQAAwug8HTG0xRjwt1UZzbcAAN7ofRO")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTest(t *testing.T) {
|
func TestTest(t *testing.T) {
|
||||||
|
|||||||
@@ -298,23 +298,8 @@ type PageShopInfo struct {
|
|||||||
TakeoutPrice int `json:"takeout_price"`
|
TakeoutPrice int `json:"takeout_price"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *API) SetStoreCookie(key, value string) {
|
|
||||||
a.locker.Lock()
|
|
||||||
defer a.locker.Unlock()
|
|
||||||
a.storeCookies[key] = value
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a *API) GetStoreCookie(key string) string {
|
|
||||||
a.locker.RLock()
|
|
||||||
defer a.locker.RUnlock()
|
|
||||||
return a.storeCookies[key]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a *API) AccessStorePage2(subURL string, params map[string]interface{}, isPost bool, cookies map[string]string) (retVal map[string]interface{}, err error) {
|
func (a *API) AccessStorePage2(subURL string, params map[string]interface{}, isPost bool, cookies map[string]string) (retVal map[string]interface{}, err error) {
|
||||||
a.locker.RLock()
|
if a.GetCookieCount() == 0 {
|
||||||
storeCookieLen := len(a.storeCookies)
|
|
||||||
a.locker.RUnlock()
|
|
||||||
if storeCookieLen == 0 {
|
|
||||||
return nil, fmt.Errorf("需要设置Store Cookie才能使用此方法")
|
return nil, fmt.Errorf("需要设置Store Cookie才能使用此方法")
|
||||||
}
|
}
|
||||||
err = platformapi.AccessPlatformAPIWithRetry(a.client,
|
err = platformapi.AccessPlatformAPIWithRetry(a.client,
|
||||||
@@ -327,20 +312,13 @@ func (a *API) AccessStorePage2(subURL string, params map[string]interface{}, isP
|
|||||||
request.Header.Set("charset", "UTF-8")
|
request.Header.Set("charset", "UTF-8")
|
||||||
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||||
}
|
}
|
||||||
a.locker.RLock()
|
a.FillRequestCookies(request)
|
||||||
for k, v := range a.storeCookies {
|
|
||||||
request.AddCookie(&http.Cookie{
|
|
||||||
Name: k,
|
|
||||||
Value: v,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
for k, v := range cookies {
|
for k, v := range cookies {
|
||||||
request.AddCookie(&http.Cookie{
|
request.AddCookie(&http.Cookie{
|
||||||
Name: k,
|
Name: k,
|
||||||
Value: v,
|
Value: v,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
a.locker.RUnlock()
|
|
||||||
return request
|
return request
|
||||||
},
|
},
|
||||||
a.config,
|
a.config,
|
||||||
|
|||||||
@@ -59,6 +59,8 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type API struct {
|
type API struct {
|
||||||
|
platformapi.APICookie
|
||||||
|
|
||||||
token string
|
token string
|
||||||
appKey string
|
appKey string
|
||||||
appSecret string
|
appSecret string
|
||||||
|
|||||||
@@ -27,7 +27,9 @@ func init() {
|
|||||||
// 天天果园
|
// 天天果园
|
||||||
// api = New("84541069-fbe2-424b-b625-9b2ba1d4c9e6", "5d5577a2506f41b8b4ec520ba83490f5", "0b01b9eeb15b41dab1c3d05d95c17a26")
|
// api = New("84541069-fbe2-424b-b625-9b2ba1d4c9e6", "5d5577a2506f41b8b4ec520ba83490f5", "0b01b9eeb15b41dab1c3d05d95c17a26")
|
||||||
|
|
||||||
api.SetStoreCookie("YYJV3NHVBPHLD36FWP6F3EM5PTXJ2XZQS7U4HWRIDPP4IWGUKUIB4XG5N26CZRDLDF7PKOXBPD6BNTUAJLETLZOIWMCVFI3K6MYZIY4QBIXIMXYDJNUKFGJVQTN5356SAD6WPCIHWNQAG7DDMF7L7S3SHDYZP7PPVMRGO4VWG2JRBMKFTOGIWZ5L2XHXC3SXQ4OLX7EL4RKUPZQT6GOH63KE3EVK37L5LG7TGSDGXFQP4377YK72UB5YZG6IJH6PY25YLLCJYPMDSHKPGYBUFJ4MMMKGN6MWB37CP7XVDBBZJ3U462ENTEXH744AWCQCIG2AAE2PKYVHC")
|
const cookieValue = "YYJV3NHVBPHLD36FWP6F3EM5PTXJ2XZQS7U4HWRIDPP4IWGUKUIB4XG5N26CZRDLDF7PKOXBPD6BNTUAJLETLZOIWMCVFI3K6MYZIY4QBIXIMXYDJNUKFGJVQTN5356SAD6WPCIHWNQAG7DDMF7L7S3SHDYZP7PPVMRGO4VWG2JRBMKFTOGIWZ5L2XHXC3SXQ4OLX7EL4RKUPZQT6GOH63KE3EVK37L5LG7TGSDGXFQP4377YK72UB5YZG6IJH6PY25YLLCJYPMDSHKPGYBUFJ4MMMKGN6MWB37CP7XVDBBZJ3U462ENTEXH744AWCQCIG2AAE2PKYVHC"
|
||||||
|
api.SetCookie(accessStorePageCookieName, cookieValue)
|
||||||
|
api.SetCookie(accessStorePageCookieName2, cookieValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTest(t *testing.T) {
|
func TestTest(t *testing.T) {
|
||||||
|
|||||||
@@ -140,21 +140,8 @@ var (
|
|||||||
monthSaleNumReg = regexp.MustCompile(`(\d+)([千|万])`)
|
monthSaleNumReg = regexp.MustCompile(`(\d+)([千|万])`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func (a *API) SetStoreCookie(storeCookie string) {
|
|
||||||
a.locker.Lock()
|
|
||||||
defer a.locker.Unlock()
|
|
||||||
a.storeCookie = storeCookie
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a *API) GetStoreCookie() string {
|
|
||||||
a.locker.RLock()
|
|
||||||
defer a.locker.RUnlock()
|
|
||||||
return a.storeCookie
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a *API) AccessStorePage(fullURL string, params map[string]interface{}, isPost bool) (retVal map[string]interface{}, err error) {
|
func (a *API) AccessStorePage(fullURL string, params map[string]interface{}, isPost bool) (retVal map[string]interface{}, err error) {
|
||||||
storeCookie := a.GetStoreCookie()
|
if a.GetCookieCount() == 0 {
|
||||||
if storeCookie == "" {
|
|
||||||
return nil, fmt.Errorf("需要设置Store Cookie才能使用此方法")
|
return nil, fmt.Errorf("需要设置Store Cookie才能使用此方法")
|
||||||
}
|
}
|
||||||
err = platformapi.AccessPlatformAPIWithRetry(a.client,
|
err = platformapi.AccessPlatformAPIWithRetry(a.client,
|
||||||
@@ -170,14 +157,7 @@ func (a *API) AccessStorePage(fullURL string, params map[string]interface{}, isP
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
request.AddCookie(&http.Cookie{
|
a.FillRequestCookies(request)
|
||||||
Name: accessStorePageCookieName,
|
|
||||||
Value: storeCookie,
|
|
||||||
})
|
|
||||||
request.AddCookie(&http.Cookie{
|
|
||||||
Name: accessStorePageCookieName2,
|
|
||||||
Value: storeCookie,
|
|
||||||
})
|
|
||||||
return request
|
return request
|
||||||
},
|
},
|
||||||
a.config,
|
a.config,
|
||||||
|
|||||||
@@ -156,6 +156,8 @@ type GoodsDetail struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type API struct {
|
type API struct {
|
||||||
|
platformapi.APICookie
|
||||||
|
|
||||||
appKey string
|
appKey string
|
||||||
secret string
|
secret string
|
||||||
client *http.Client
|
client *http.Client
|
||||||
@@ -196,22 +198,30 @@ func (a *API) signParams(params url.Values) string {
|
|||||||
return fmt.Sprintf("%x", sha1.Sum([]byte(finalStr)))
|
return fmt.Sprintf("%x", sha1.Sum([]byte(finalStr)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *API) AccessAPI(action string, params map[string]interface{}) (retVal *ResponseResult, err error) {
|
func (a *API) AccessAPI2(baseURL, action string, params map[string]interface{}) (retVal *ResponseResult, err error) {
|
||||||
if params == nil {
|
if params == nil {
|
||||||
panic("params is nil!")
|
panic("params is nil!")
|
||||||
}
|
}
|
||||||
|
|
||||||
params2 := utils.Map2URLValues(params)
|
params2 := utils.Map2URLValues(params)
|
||||||
params2.Set("appkey", a.appKey)
|
if baseURL == mtpsAPIURL {
|
||||||
params2.Set("timestamp", utils.Int64ToStr(utils.GetCurTimestamp()))
|
params2.Set("appkey", a.appKey)
|
||||||
params2.Set("version", "1.0")
|
params2.Set("timestamp", utils.Int64ToStr(utils.GetCurTimestamp()))
|
||||||
params2.Set(signKey, a.signParams(params2))
|
params2.Set("version", "1.0")
|
||||||
|
params2.Set(signKey, a.signParams(params2))
|
||||||
|
} else if a.GetCookieCount() == 0 {
|
||||||
|
return nil, fmt.Errorf("需要设置Store Cookie才能使用此方法")
|
||||||
|
}
|
||||||
// baseapi.SugarLogger.Debug(params2.Encode())
|
// baseapi.SugarLogger.Debug(params2.Encode())
|
||||||
|
|
||||||
err = platformapi.AccessPlatformAPIWithRetry(a.client,
|
err = platformapi.AccessPlatformAPIWithRetry(a.client,
|
||||||
func() *http.Request {
|
func() *http.Request {
|
||||||
request, _ := http.NewRequest(http.MethodPost, mtpsAPIURL+"/"+action, strings.NewReader(params2.Encode()))
|
request, _ := http.NewRequest(http.MethodPost, baseURL+"/"+action, strings.NewReader(params2.Encode()))
|
||||||
|
request.Header.Set("charset", "UTF-8")
|
||||||
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||||
|
if baseURL != mtpsAPIURL {
|
||||||
|
a.FillRequestCookies(request)
|
||||||
|
}
|
||||||
return request
|
return request
|
||||||
},
|
},
|
||||||
a.config,
|
a.config,
|
||||||
@@ -236,6 +246,10 @@ func (a *API) AccessAPI(action string, params map[string]interface{}) (retVal *R
|
|||||||
return retVal, err
|
return retVal, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *API) AccessAPI(action string, params map[string]interface{}) (retVal *ResponseResult, err error) {
|
||||||
|
return a.AccessAPI2(mtpsAPIURL, action, params)
|
||||||
|
}
|
||||||
|
|
||||||
func (a *API) result2OrderResponse(result *ResponseResult) (order *OrderResponse) {
|
func (a *API) result2OrderResponse(result *ResponseResult) (order *OrderResponse) {
|
||||||
order = new(OrderResponse)
|
order = new(OrderResponse)
|
||||||
order.MtPeisongID = result.Data["mt_peisong_id"].(string)
|
order.MtPeisongID = result.Data["mt_peisong_id"].(string)
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ func init() {
|
|||||||
api = New("25e816550bc9484480642f19a95f13fd", "r4$HqrKx9~=7?2Jfo,$Z~a7%~k!Au&pEdI2)oPJvSbH2ao@2N0[8wSIvtuumh_J^")
|
api = New("25e816550bc9484480642f19a95f13fd", "r4$HqrKx9~=7?2Jfo,$Z~a7%~k!Au&pEdI2)oPJvSbH2ao@2N0[8wSIvtuumh_J^")
|
||||||
// prod
|
// prod
|
||||||
// api = New("3c0a05d464c247c19d7ec13accc78605", "b1M}9?:sTbsB[OF2gNORnN(|(iy9rB8(`7]|[wGLnbmt`evfM>E:A90DjHAW:UPE")
|
// api = New("3c0a05d464c247c19d7ec13accc78605", "b1M}9?:sTbsB[OF2gNORnN(|(iy9rB8(`7]|[wGLnbmt`evfM>E:A90DjHAW:UPE")
|
||||||
|
|
||||||
|
api.SetCookie("token", "0seqGSJnhbr4XJ0EaIQL6CoOpnaV1ErgS42uOlzNXYIX7PeuLuyCFQQZKKWGExJ7IMTQQQDe5H6YMmVFnxjCkw")
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleError(t *testing.T, err error) {
|
func handleError(t *testing.T, err error) {
|
||||||
|
|||||||
17
platformapi/mtpsapi/shop_page.go
Normal file
17
platformapi/mtpsapi/shop_page.go
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package mtpsapi
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func (a *API) PagePoiUpdate(outerPoiID, contactName, contactPhone, contactEmail string) (err error) {
|
||||||
|
if outerPoiID == "" || contactName == "" || contactPhone == "" || contactEmail == "" {
|
||||||
|
return fmt.Errorf("所有参数必须都要有值")
|
||||||
|
}
|
||||||
|
params := map[string]interface{}{
|
||||||
|
"outerPoiId": outerPoiID,
|
||||||
|
"contactName": contactName,
|
||||||
|
"contactPhone": contactPhone,
|
||||||
|
"contactEmail": contactEmail,
|
||||||
|
}
|
||||||
|
_, err = a.AccessAPI2("https://peisong.meituan.com/api", "haikuiopen/haikui/open/partner/poi/update", params)
|
||||||
|
return err
|
||||||
|
}
|
||||||
12
platformapi/mtpsapi/shop_page_test.go
Normal file
12
platformapi/mtpsapi/shop_page_test.go
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
package mtpsapi
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestPagePoiUpdate(t *testing.T) {
|
||||||
|
err := api.PagePoiUpdate("100082", "王海红", "16601189298", "727827081@qq.com")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -52,6 +52,8 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type API struct {
|
type API struct {
|
||||||
|
platformapi.APICookie
|
||||||
|
|
||||||
appID string
|
appID string
|
||||||
secret string
|
secret string
|
||||||
callbackURL string
|
callbackURL string
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package mtwmapi
|
package mtwmapi
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/url"
|
|
||||||
"strings"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi"
|
"git.rosy.net.cn/baseapi"
|
||||||
@@ -26,50 +24,34 @@ func init() {
|
|||||||
// 果园
|
// 果园
|
||||||
// api = New("4123", "df2c88338b85f830cebce2a9eab56628", "")
|
// api = New("4123", "df2c88338b85f830cebce2a9eab56628", "")
|
||||||
|
|
||||||
// api.SetUserCookie("_lx_utm", "utm_source%3D60066")
|
// api.SetCookie("_lx_utm", "utm_source%3D60066")
|
||||||
// api.SetUserCookie("_lxsdk", "82B825F99C7098EE5254EB228DC2A863CE34008DFF4AD0913E8DC80D009AA95E")
|
// api.SetCookie("_lxsdk", "82B825F99C7098EE5254EB228DC2A863CE34008DFF4AD0913E8DC80D009AA95E")
|
||||||
// api.SetUserCookie("_lxsdk_cuid", "16b8c52943fc8-0f5c424b19a108-2d604637-3d10d-16b8c52943f24")
|
// api.SetCookie("_lxsdk_cuid", "16b8c52943fc8-0f5c424b19a108-2d604637-3d10d-16b8c52943f24")
|
||||||
// api.SetUserCookie("_lxsdk_s", "16b8c529302-353-107-d17%7C%7C11")
|
// api.SetCookie("_lxsdk_s", "16b8c529302-353-107-d17%7C%7C11")
|
||||||
// api.SetUserCookie("au_trace_key_net", "default")
|
// api.SetCookie("au_trace_key_net", "default")
|
||||||
// api.SetUserCookie("cssVersion", "b05eaa31")
|
// api.SetCookie("cssVersion", "b05eaa31")
|
||||||
// api.SetUserCookie("iuuid", "82B825F99C7098EE5254EB228DC2A863CE34008DFF4AD0913E8DC80D009AA95E")
|
// api.SetCookie("iuuid", "82B825F99C7098EE5254EB228DC2A863CE34008DFF4AD0913E8DC80D009AA95E")
|
||||||
// api.SetUserCookie("mt_c_token", "2Q-NiXyFZ6UViMatiHdP86YpX2QAAAAAqAgAABf6QG4n-W8Zy_l_WLbUUKNmy238OkBp9Fx7rVcqZH6aod8hhhyB3JjfYkOv-7024A")
|
// api.SetCookie("mt_c_token", "2Q-NiXyFZ6UViMatiHdP86YpX2QAAAAAqAgAABf6QG4n-W8Zy_l_WLbUUKNmy238OkBp9Fx7rVcqZH6aod8hhhyB3JjfYkOv-7024A")
|
||||||
// api.SetUserCookie("oops", "2Q-NiXyFZ6UViMatiHdP86YpX2QAAAAAqAgAABf6QG4n-W8Zy_l_WLbUUKNmy238OkBp9Fx7rVcqZH6aod8hhhyB3JjfYkOv-7024A")
|
// api.SetCookie("oops", "2Q-NiXyFZ6UViMatiHdP86YpX2QAAAAAqAgAABf6QG4n-W8Zy_l_WLbUUKNmy238OkBp9Fx7rVcqZH6aod8hhhyB3JjfYkOv-7024A")
|
||||||
// api.SetUserCookie("openh5_uuid", "82B825F99C7098EE5254EB228DC2A863CE34008DFF4AD0913E8DC80D009AA95E")
|
// api.SetCookie("openh5_uuid", "82B825F99C7098EE5254EB228DC2A863CE34008DFF4AD0913E8DC80D009AA95E")
|
||||||
// api.SetUserCookie("showTopHeader", "show")
|
// api.SetCookie("showTopHeader", "show")
|
||||||
// api.SetUserCookie("token", "2Q-NiXyFZ6UViMatiHdP86YpX2QAAAAAqAgAABf6QG4n-W8Zy_l_WLbUUKNmy238OkBp9Fx7rVcqZH6aod8hhhyB3JjfYkOv-7024A")
|
// api.SetCookie("token", "2Q-NiXyFZ6UViMatiHdP86YpX2QAAAAAqAgAABf6QG4n-W8Zy_l_WLbUUKNmy238OkBp9Fx7rVcqZH6aod8hhhyB3JjfYkOv-7024A")
|
||||||
// api.SetUserCookie("w_token", "2Q-NiXyFZ6UViMatiHdP86YpX2QAAAAAqAgAABf6QG4n-W8Zy_l_WLbUUKNmy238OkBp9Fx7rVcqZH6aod8hhhyB3JjfYkOv-7024A")
|
// api.SetCookie("w_token", "2Q-NiXyFZ6UViMatiHdP86YpX2QAAAAAqAgAABf6QG4n-W8Zy_l_WLbUUKNmy238OkBp9Fx7rVcqZH6aod8hhhyB3JjfYkOv-7024A")
|
||||||
// api.SetUserCookie("userFace", "")
|
// api.SetCookie("userFace", "")
|
||||||
// api.SetUserCookie("userId", "69979334")
|
// api.SetCookie("userId", "69979334")
|
||||||
// api.SetUserCookie("userName", "thepool")
|
// api.SetCookie("userName", "thepool")
|
||||||
// api.SetUserCookie("uuid", "82B825F99C7098EE5254EB228DC2A863CE34008DFF4AD0913E8DC80D009AA95E")
|
// api.SetCookie("uuid", "82B825F99C7098EE5254EB228DC2A863CE34008DFF4AD0913E8DC80D009AA95E")
|
||||||
// api.SetUserCookie("wm_order_channel", "default")
|
// api.SetCookie("wm_order_channel", "default")
|
||||||
// api.SetUserCookie("w_utmz", "utm_campaign=(direct)&utm_source=5000&utm_medium=(none)&utm_content=(none)&utm_term=(none)")
|
// api.SetCookie("w_utmz", "utm_campaign=(direct)&utm_source=5000&utm_medium=(none)&utm_content=(none)&utm_term=(none)")
|
||||||
// api.SetUserCookie("w_visitid", "c2d0e4c9-3ab8-4163-b94f-a3dbfd9d7a94")
|
// api.SetCookie("w_visitid", "c2d0e4c9-3ab8-4163-b94f-a3dbfd9d7a94")
|
||||||
// api.SetUserCookie("w_actual_lng", "104076656")
|
// api.SetCookie("w_actual_lng", "104076656")
|
||||||
// api.SetUserCookie("w_actual_lat", "30665696")
|
// api.SetCookie("w_actual_lat", "30665696")
|
||||||
// api.SetUserCookie("w_latlng", "30702250,104052315")
|
// api.SetCookie("w_latlng", "30702250,104052315")
|
||||||
|
|
||||||
cookieStr := `
|
cookieStr := `
|
||||||
_lx_utm=utm_source%3D60066; _lxsdk=6A074A0B834664A32E0735231E4FD9C4263666B70A7FEC663F9945110C52EFB3; _lxsdk_cuid=16b8ca9baf5c8-03bbc09a88c9e4-2d604637-3d10d-16b8ca9baf5c8; _lxsdk_s=16b8ca9b8f4-58-f63-4b4%7C18087777%7C19; au_trace_key_net=default; cssVersion=b05eaa31; iuuid=6A074A0B834664A32E0735231E4FD9C4263666B70A7FEC663F9945110C52EFB3; mt_c_token=jeZimbpuoKnPsfoHbT3_CR_w_W0AAAAApQgAAGU0Z9sTXiFzlp-8N8q-UWFdq5xSvYzWOjNhbNK0RGq9m6YaRNc7FtHjpkqFkJ_x2w; oops=jeZimbpuoKnPsfoHbT3_CR_w_W0AAAAApQgAAGU0Z9sTXiFzlp-8N8q-UWFdq5xSvYzWOjNhbNK0RGq9m6YaRNc7FtHjpkqFkJ_x2w; openh5_uuid=6A074A0B834664A32E0735231E4FD9C4263666B70A7FEC663F9945110C52EFB3; token=jeZimbpuoKnPsfoHbT3_CR_w_W0AAAAApQgAAGU0Z9sTXiFzlp-8N8q-UWFdq5xSvYzWOjNhbNK0RGq9m6YaRNc7FtHjpkqFkJ_x2w; userId=69979334; userName=thepool; uuid=6A074A0B834664A32E0735231E4FD9C4263666B70A7FEC663F9945110C52EFB3; wm_order_channel=default; terminal=i; w_utmz="utm_campaign=(direct)&utm_source=5000&utm_medium=(none)&utm_content=(none)&utm_term=(none)"; w_latlng=30694640,104057119; w_visitid=956b412d-c47c-4fec-ae99-7b7cb0c9ab45; w_token=jeZimbpuoKnPsfoHbT3_CR_w_W0AAAAApQgAAGU0Z9sTXiFzlp-8N8q-UWFdq5xSvYzWOjNhbNK0RGq9m6YaRNc7FtHjpkqFkJ_x2w
|
_lx_utm=utm_source%3D60066; _lxsdk=6A074A0B834664A32E0735231E4FD9C4263666B70A7FEC663F9945110C52EFB3; _lxsdk_cuid=16b8ca9baf5c8-03bbc09a88c9e4-2d604637-3d10d-16b8ca9baf5c8; _lxsdk_s=16b8ca9b8f4-58-f63-4b4%7C18087777%7C19; au_trace_key_net=default; cssVersion=b05eaa31; iuuid=6A074A0B834664A32E0735231E4FD9C4263666B70A7FEC663F9945110C52EFB3; mt_c_token=jeZimbpuoKnPsfoHbT3_CR_w_W0AAAAApQgAAGU0Z9sTXiFzlp-8N8q-UWFdq5xSvYzWOjNhbNK0RGq9m6YaRNc7FtHjpkqFkJ_x2w; oops=jeZimbpuoKnPsfoHbT3_CR_w_W0AAAAApQgAAGU0Z9sTXiFzlp-8N8q-UWFdq5xSvYzWOjNhbNK0RGq9m6YaRNc7FtHjpkqFkJ_x2w; openh5_uuid=6A074A0B834664A32E0735231E4FD9C4263666B70A7FEC663F9945110C52EFB3; token=jeZimbpuoKnPsfoHbT3_CR_w_W0AAAAApQgAAGU0Z9sTXiFzlp-8N8q-UWFdq5xSvYzWOjNhbNK0RGq9m6YaRNc7FtHjpkqFkJ_x2w; userId=69979334; userName=thepool; uuid=6A074A0B834664A32E0735231E4FD9C4263666B70A7FEC663F9945110C52EFB3; wm_order_channel=default; terminal=i; w_utmz="utm_campaign=(direct)&utm_source=5000&utm_medium=(none)&utm_content=(none)&utm_term=(none)"; w_latlng=30694640,104057119; w_visitid=956b412d-c47c-4fec-ae99-7b7cb0c9ab45; w_token=jeZimbpuoKnPsfoHbT3_CR_w_W0AAAAApQgAAGU0Z9sTXiFzlp-8N8q-UWFdq5xSvYzWOjNhbNK0RGq9m6YaRNc7FtHjpkqFkJ_x2w
|
||||||
`
|
`
|
||||||
cookieList := strings.Split(cookieStr, ";")
|
api.SetCookieWithStr(cookieStr)
|
||||||
for _, v := range cookieList {
|
|
||||||
index := strings.Index(v, "=")
|
|
||||||
pair := []string{
|
|
||||||
v[:index],
|
|
||||||
v[index+1:],
|
|
||||||
}
|
|
||||||
pair[1], _ = url.QueryUnescape(pair[1])
|
|
||||||
if strings.Index(pair[1], "\"") >= 0 {
|
|
||||||
pair[1] = url.QueryEscape(strings.Trim(utils.TrimBlankChar(pair[1]), "\""))
|
|
||||||
}
|
|
||||||
// pair := strings.Split(v, "=")
|
|
||||||
if len(pair) > 1 {
|
|
||||||
baseapi.SugarLogger.Debug(pair[0], "=", pair[1])
|
|
||||||
api.SetUserCookie(utils.TrimBlankChar(pair[0]), utils.TrimBlankChar(pair[1]))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAccessAPI(t *testing.T) {
|
func TestAccessAPI(t *testing.T) {
|
||||||
|
|||||||
@@ -37,23 +37,8 @@ type ListShopItem struct {
|
|||||||
WmPoiScore int `json:"wmPoiScore"`
|
WmPoiScore int `json:"wmPoiScore"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *API) SetUserCookie(key, value string) {
|
|
||||||
a.locker.Lock()
|
|
||||||
defer a.locker.Unlock()
|
|
||||||
a.userCookies[key] = value
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a *API) GetUserCookie(key string) string {
|
|
||||||
a.locker.RLock()
|
|
||||||
defer a.locker.RUnlock()
|
|
||||||
return a.userCookies[key]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a *API) AccessUserPage(subURL string, params map[string]interface{}) (retVal map[string]interface{}, err error) {
|
func (a *API) AccessUserPage(subURL string, params map[string]interface{}) (retVal map[string]interface{}, err error) {
|
||||||
a.locker.RLock()
|
if a.GetCookieCount() == 0 {
|
||||||
storeCookieLen := len(a.userCookies)
|
|
||||||
a.locker.RUnlock()
|
|
||||||
if storeCookieLen == 0 {
|
|
||||||
return nil, fmt.Errorf("需要设置User Cookie才能使用此方法")
|
return nil, fmt.Errorf("需要设置User Cookie才能使用此方法")
|
||||||
}
|
}
|
||||||
err = platformapi.AccessPlatformAPIWithRetry(a.client,
|
err = platformapi.AccessPlatformAPIWithRetry(a.client,
|
||||||
@@ -66,14 +51,7 @@ func (a *API) AccessUserPage(subURL string, params map[string]interface{}) (retV
|
|||||||
request.Header.Set("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1")
|
request.Header.Set("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1")
|
||||||
request.Header.Set("Pragma", "no-cache")
|
request.Header.Set("Pragma", "no-cache")
|
||||||
|
|
||||||
a.locker.RLock()
|
a.FillRequestCookies(request)
|
||||||
for k, v := range a.userCookies {
|
|
||||||
request.AddCookie(&http.Cookie{
|
|
||||||
Name: k,
|
|
||||||
Value: v,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
a.locker.RUnlock()
|
|
||||||
return request
|
return request
|
||||||
},
|
},
|
||||||
a.config,
|
a.config,
|
||||||
|
|||||||
76
platformapi/platformapi_cookie.go
Normal file
76
platformapi/platformapi_cookie.go
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
package platformapi
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
"sync"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
|
)
|
||||||
|
|
||||||
|
type APICookie struct {
|
||||||
|
locker sync.RWMutex
|
||||||
|
storeCookies map[string]string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *APICookie) createMapIfNeeded() {
|
||||||
|
if a.storeCookies == nil {
|
||||||
|
a.storeCookies = make(map[string]string)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *APICookie) SetCookieWithStr(cookieStr string) {
|
||||||
|
cookieList := strings.Split(cookieStr, ";")
|
||||||
|
for _, v := range cookieList {
|
||||||
|
if index := strings.Index(v, "="); index > 0 {
|
||||||
|
pair := []string{
|
||||||
|
v[:index],
|
||||||
|
v[index+1:],
|
||||||
|
}
|
||||||
|
// pair[1], _ = url.QueryUnescape(pair[1])
|
||||||
|
// if strings.Index(pair[1], "\"") >= 0 {
|
||||||
|
// pair[1] = url.QueryEscape(strings.Trim(utils.TrimBlankChar(pair[1]), "\""))
|
||||||
|
// }
|
||||||
|
k := utils.TrimBlankChar(pair[0])
|
||||||
|
v := utils.TrimBlankChar(pair[1])
|
||||||
|
if k != "" && v != "" {
|
||||||
|
a.SetCookie(k, v)
|
||||||
|
baseapi.SugarLogger.Debugf("%s=%s", k, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *APICookie) SetCookie(key, value string) {
|
||||||
|
a.locker.Lock()
|
||||||
|
defer a.locker.Unlock()
|
||||||
|
a.createMapIfNeeded()
|
||||||
|
a.storeCookies[key] = value
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *APICookie) GetCookie(key string) string {
|
||||||
|
a.locker.RLock()
|
||||||
|
defer a.locker.RUnlock()
|
||||||
|
a.createMapIfNeeded()
|
||||||
|
return a.storeCookies[key]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *APICookie) GetCookieCount() int {
|
||||||
|
a.locker.RLock()
|
||||||
|
defer a.locker.RUnlock()
|
||||||
|
return len(a.storeCookies)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *APICookie) FillRequestCookies(r *http.Request) *http.Request {
|
||||||
|
a.locker.RLock()
|
||||||
|
defer a.locker.RUnlock()
|
||||||
|
for k, v := range a.storeCookies {
|
||||||
|
r.AddCookie(&http.Cookie{
|
||||||
|
Name: k,
|
||||||
|
Value: v,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return r
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user