Commit 66c12e7b authored by 王明明's avatar 王明明

改写

parent 671fb383
...@@ -8,6 +8,7 @@ require ( ...@@ -8,6 +8,7 @@ require (
github.com/bogdanfinn/tls-client v1.3.6 // indirect github.com/bogdanfinn/tls-client v1.3.6 // indirect
github.com/bogdanfinn/utls v1.5.14 // indirect github.com/bogdanfinn/utls v1.5.14 // indirect
github.com/google/uuid v1.3.0 // indirect github.com/google/uuid v1.3.0 // indirect
github.com/gorilla/mux v1.8.0 // indirect
github.com/klauspost/compress v1.15.12 // indirect github.com/klauspost/compress v1.15.12 // indirect
github.com/tam7t/hpkp v0.0.0-20160821193359-2b70b4024ed5 // indirect github.com/tam7t/hpkp v0.0.0-20160821193359-2b70b4024ed5 // indirect
golang.org/x/crypto v0.1.0 // indirect golang.org/x/crypto v0.1.0 // indirect
......
...@@ -9,6 +9,8 @@ github.com/bogdanfinn/utls v1.5.14/go.mod h1:mHeRCi69cUiEyVBkKONB1cAbLjRcZnlJbGz ...@@ -9,6 +9,8 @@ github.com/bogdanfinn/utls v1.5.14/go.mod h1:mHeRCi69cUiEyVBkKONB1cAbLjRcZnlJbGz
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
github.com/klauspost/compress v1.15.12 h1:YClS/PImqYbn+UILDnqxQCZ3RehC9N318SU3kElDUEM= github.com/klauspost/compress v1.15.12 h1:YClS/PImqYbn+UILDnqxQCZ3RehC9N318SU3kElDUEM=
github.com/klauspost/compress v1.15.12/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.15.12/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
......
...@@ -2,148 +2,42 @@ package main ...@@ -2,148 +2,42 @@ package main
import ( import (
"fmt" "fmt"
http "github.com/bogdanfinn/fhttp" "github.com/gorilla/mux"
tls_client "github.com/bogdanfinn/tls-client"
"io"
"log" "log"
"net/url" "net/http"
"strconv" "regexp"
"strings" "test/model"
"sync"
) )
type AkmClient struct { func WelcomeHandler(w http.ResponseWriter, r *http.Request) {
Jar tls_client.CookieJar fmt.Fprintf(w, "Welcome!")
Client tls_client.HttpClient
} }
var akmClient *AkmClient
func NewAkmClient() *AkmClient {
jar := tls_client.NewCookieJar()
options := []tls_client.HttpClientOption{
tls_client.WithTimeoutSeconds(30),
tls_client.WithClientProfile(tls_client.Chrome_110),
tls_client.WithNotFollowRedirects(),
tls_client.WithCookieJar(jar), // create cookieJar instance and pass it as argument
//tls_client.WithProxyUrl("http://user:pass@host:port"),
//tls_client.WithInsecureSkipVerify(),
}
client, err := tls_client.NewHttpClient(tls_client.NewNoopLogger(), options...)
if err != nil {
log.Println(err)
}
//client.SetProxy("http://user-unifflcc-region-us:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600")
client.SetProxy("http://127.0.0.1:9999")
return &AkmClient{Jar: jar, Client: client}
}
func GetAbck(times int, urlInput string) {
abck, bmsz := GetCookie()
data := url.Values{}
data.Set("times", strconv.Itoa(times))
data.Set("abck", abck)
data.Set("bm_sz", bmsz)
data.Set("url", urlInput)
//'url': 'https://www.easyjet.com/en/buy/flights?isOneWay=on&pid=www.easyjet.com'
resp, err := http.PostForm("http://127.0.0.1:3033/akm2t", data)
defer resp.Body.Close()
if err != nil {
log.Println(err)
}
res, _ := io.ReadAll(resp.Body)
sensor_data := "{\"sensor_data\":\"" + string(res) + "\"}"
akmRes, err := akmClient.Client.Post("https://www.easyjet.com/W-rQf1/Hlbd/0lI/xzR/9pRrLiXx/3YOGQtVbp1iLED/HyNpQmYB/ZBc/QIGwxAlM", "application/json", strings.NewReader(sensor_data))
defer akmRes.Body.Close()
akmResBytes, _ := io.ReadAll(akmRes.Body)
fmt.Println(times, string(akmResBytes))
}
func GetCookie() (string, string) {
uri, _ := url.Parse("https://www.easyjet.com/en")
cookies := akmClient.Jar.Cookies(uri)
abck := ""
bmsz := ""
for _, v := range cookies {
if v.Name == "_abck" {
abck = v.Value
}
if v.Name == "bm_sz" {
bmsz = v.Value
}
}
return abck, bmsz
}
func initAbck(url string) {
req, err := http.NewRequest(http.MethodGet, url, nil)
//req, err := http.NewRequest(http.MethodGet, "https://www.easyjet.com/ejavailability/api/v66/availability/query?AdditionalSeats=0&AdultSeats=1&ArrivalIata=LGW&ChildSeats=0&DepartureIata=BFS&IncludeAdminFees=true&IncludeFlexiFares=false&IncludeLowestFareSeats=true&IncludePrices=true&Infants=0&IsTransfer=false&LanguageCode=EN&MaxDepartureDate=2023-03-20&MinDepartureDate=2023-03-18", nil)
if err != nil {
log.Println(err)
return
}
req.Header = http.Header{
"accept": {"*/*"},
"accept-language": {"de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7"},
"user-agent": {"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36"},
http.HeaderOrderKey: {
"accept",
"accept-language",
"user-agent",
},
}
_, err = akmClient.Client.Do(req)
//defer resp.Body.Close()
if err != nil {
log.Println(err)
return
}
}
func query() {
req, err := http.NewRequest("GET", "https://www.easyjet.com/ejavailability/api/v66/availability/query?AdditionalSeats=0&AdultSeats=1&ArrivalIata=LGW&ChildSeats=0&DepartureIata=BFS&IncludeAdminFees=true&IncludeFlexiFares=false&IncludeLowestFareSeats=true&IncludePrices=true&Infants=0&IsTransfer=false&LanguageCode=EN&MaxDepartureDate=2023-03-20&MinDepartureDate=2023-03-18", nil)
if err != nil {
panic(err)
}
req.Header = http.Header{
"accept": {"*/*"},
"accept-language": {"de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7"},
"user-agent": {"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36"},
http.HeaderOrderKey: {
"accept",
"accept-language",
"user-agent",
},
}
resp, err := akmClient.Client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("响应结果", resp.StatusCode)
//readBytes, _ := io.ReadAll(resp.Body)
//fmt.Println(string(readBytes))
}
func run(wg *sync.WaitGroup) {
akmClient = NewAkmClient()
initAbck("https://www.easyjet.com/en")
GetAbck(0, "https://www.easyjet.com/en/buy/flights?isOneWay=on&pid=www.easyjet.com")
GetAbck(1, "https://www.easyjet.com/en/buy/flights?isOneWay=on&pid=www.easyjet.com")
GetAbck(2, "https://www.easyjet.com/en/buy/flights?isOneWay=on&pid=www.easyjet.com")
query()
wg.Done()
}
func main() { func main() {
wg := &sync.WaitGroup{} //wg := &sync.WaitGroup{}
for i := 0; i < 10; i++ { //for i := 0; i < 10; i++ {
wg.Add(1) // wg.Add(1)
//
// go run(wg)
//}
//wg.Wait()
str := "<noscript><img src=\"https://www.easyjet.com/akam/13/pixel_7b9d10f9?a=dD1lMmMzOTBjM2M4NWUyYz\nkzNjljOTNhZDUyNmRkOGJjMDdjNjM2MWJmJmpzPW9mZg==\" style=\"visibility: hidden; position: absolu\nte; left: -999px; top: -999px;\" /></noscript><script type=\"text/javascript\" src=\"/-Hzovq/uluGM/jHPdr/v3N7/m5OOLVXmDOwY/NG4dCQE/Zy/lnEF9qaQI\"></script></body>\n</html>"
reg, _ := regexp.Compile("</noscript><script type=\"text/javascript\" src=\"(.+?)\"></s")
matchs := reg.FindStringSubmatch(str)
fmt.Println(matchs)
router := mux.NewRouter()
router.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
fmt.Fprintln(writer, "hello world")
})
akmRouter := router.PathPrefix("/akamai").Subrouter()
model.InitRouter(akmRouter)
fmt.Println("服务监听 http://localhost:19999")
server := http.Server{
Addr: ":19999",
Handler: router,
}
log.Fatal(server.ListenAndServe())
go run(wg)
}
wg.Wait()
} }
package model
import (
"fmt"
http "github.com/bogdanfinn/fhttp"
tls_client "github.com/bogdanfinn/tls-client"
"io"
"log"
"net/url"
"regexp"
"strings"
"test/sensor"
)
type AkmClient struct {
Jar tls_client.CookieJar
Client tls_client.HttpClient
SensorUrl string
}
var akmClient *AkmClient
func NewAkmClient() *AkmClient {
jar := tls_client.NewCookieJar()
options := []tls_client.HttpClientOption{
tls_client.WithTimeoutSeconds(30),
tls_client.WithClientProfile(tls_client.Chrome_110),
tls_client.WithNotFollowRedirects(),
tls_client.WithCookieJar(jar), // create cookieJar instance and pass it as argument
//tls_client.WithProxyUrl("http://user:pass@host:port"),
//tls_client.WithInsecureSkipVerify(),
}
client, err := tls_client.NewHttpClient(tls_client.NewNoopLogger(), options...)
if err != nil {
log.Println(err)
}
//client.SetProxy("http://user-unifflcc-region-us:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600")
client.SetProxy("http://127.0.0.1:8888")
return &AkmClient{Jar: jar, Client: client}
}
func GetAbck(times int, urlInput string) []*http.Cookie {
abck, bmsz := GetCookie()
//data := url.Values{}
//data.Set("times", strconv.Itoa(times))
//data.Set("abck", abck)
//data.Set("bm_sz", bmsz)
//data.Set("url", urlInput)
//'url': 'https://www.easyjet.com/en/buy/flights?isOneWay=on&pid=www.easyjet.com'
//resp, err := http.PostForm("http://127.0.0.1:3033/akm2t", data)
//defer resp.Body.Close()
//if err != nil {
// log.Println(err)
//}
//res, _ := io.ReadAll(resp.Body)
ua := "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.50"
res := sensor.GenData(abck, bmsz, ua, urlInput)
sensor_data := "{\"sensor_data\":\"" + string(res) + "\"}"
akmRes, err := akmClient.Client.Post("https://www.easyjet.com"+akmClient.SensorUrl, "application/json", strings.NewReader(sensor_data))
if err != nil {
log.Fatalln(err)
}
defer akmRes.Body.Close()
akmResBytes, _ := io.ReadAll(akmRes.Body)
fmt.Println(times, string(akmResBytes))
return akmRes.Cookies()
}
func GetCookie() (string, string) {
uri, _ := url.Parse("https://www.easyjet.com/en")
cookies := akmClient.Jar.Cookies(uri)
abck := ""
bmsz := ""
for _, v := range cookies {
if v.Name == "_abck" {
abck = v.Value
}
if v.Name == "bm_sz" {
bmsz = v.Value
}
}
return abck, bmsz
}
func initAbck(url string) string {
req, err := http.NewRequest(http.MethodGet, url, nil)
//req, err := http.NewRequest(http.MethodGet, "https://www.easyjet.com/ejavailability/api/v66/availability/query?AdditionalSeats=0&AdultSeats=1&ArrivalIata=LGW&ChildSeats=0&DepartureIata=BFS&IncludeAdminFees=true&IncludeFlexiFares=false&IncludeLowestFareSeats=true&IncludePrices=true&Infants=0&IsTransfer=false&LanguageCode=EN&MaxDepartureDate=2023-03-20&MinDepartureDate=2023-03-18", nil)
if err != nil {
log.Println(err)
return ""
}
req.Header = http.Header{
"accept": {"*/*"},
"accept-language": {"de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7"},
"user-agent": {"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36"},
http.HeaderOrderKey: {
"accept",
"accept-language",
"user-agent",
},
}
resp, err := akmClient.Client.Do(req)
defer resp.Body.Close()
if err != nil {
log.Println(err)
return ""
}
readBytes, _ := io.ReadAll(resp.Body)
//fmt.Println(string(readBytes))
reg, _ := regexp.Compile("</noscript><script type=\"text/javascript\" src=\"(.+?)\"></s")
matchs := reg.FindStringSubmatch(string(readBytes))
if len(matchs) == 2 {
return matchs[1]
}
return ""
}
func query() {
req, err := http.NewRequest("GET", "https://www.easyjet.com/ejavailability/api/v66/availability/query?AdditionalSeats=0&AdultSeats=1&ArrivalIata=LGW&ChildSeats=0&DepartureIata=BFS&IncludeAdminFees=true&IncludeFlexiFares=false&IncludeLowestFareSeats=true&IncludePrices=true&Infants=0&IsTransfer=false&LanguageCode=EN&MaxDepartureDate=2023-03-20&MinDepartureDate=2023-03-18", nil)
if err != nil {
panic(err)
}
req.Header = http.Header{
"accept": {"*/*"},
"accept-language": {"de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7"},
"user-agent": {"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36"},
http.HeaderOrderKey: {
"accept",
"accept-language",
"user-agent",
},
}
resp, err := akmClient.Client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("响应结果", resp.StatusCode)
readBytes, _ := io.ReadAll(resp.Body)
fmt.Println(string(readBytes))
}
func EasyJet() *Akm {
akmClient = NewAkmClient()
url := "https://www.easyjet.com/en"
akmClient.SensorUrl = initAbck(url)
GetAbck(0, "https://www.easyjet.com/en/buy/flights?isOneWay=on&pid=www.easyjet.com")
GetAbck(1, "https://www.easyjet.com/en/buy/flights?isOneWay=on&pid=www.easyjet.com")
respCk := GetAbck(2, "https://www.easyjet.com/en/buy/flights?isOneWay=on&pid=www.easyjet.com")
abck, bm_sz := GetCookie()
for _, v := range respCk {
if v.Name == "_abck" {
abck = v.Value
}
}
akm := &Akm{
Abck: abck,
Bmsz: bm_sz,
Cookies: GetAllCookie(),
Ua: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.50",
}
//query()
return akm
}
func GetAllCookie() map[string]string {
res := make(map[string]string)
uri, _ := url.Parse("https://www.easyjet.com/en")
cookies := akmClient.Jar.Cookies(uri)
for _, v := range cookies {
res[v.Name] = v.Value
}
return res
}
package model
import (
"github.com/gorilla/mux"
"net/http"
"test/util"
)
func routeToU2(w http.ResponseWriter, r *http.Request) {
data := util.GetPostJson(r)
if err := checkPostRequire(data); err == false {
util.WriteJson(w, util.ErrorJson("请求参数不正确"))
}
carrierType := data["type"]
var akm *Akm
switch carrierType {
case "u2":
akm = EasyJet()
default:
util.WriteJson(w, util.ErrorJson("不支持的航司"))
return
}
cookies := akm.Cookies
util.WriteJson(w, &util.Response{
Code: 200,
Message: "请求成功",
Cookies: cookies,
Ua: akm.Ua,
})
}
func checkPostRequire(data map[string]interface{}) bool {
_, ok := data["type"]
if !ok {
return false
}
_, ok = data["proxy"]
if !ok {
return false
}
return true
}
func InitRouter(r *mux.Router) {
r.HandleFunc("/gen", routeToU2).Methods("POST")
}
package model
type Akm struct {
Abck string `json:"_abck"`
Bmsz string `json:"bm_sz"`
Cookies map[string]string `json:"cookies"`
Ua string `json:"ua"`
}
package env
type Env struct {
AddEventListener int `json:"addEventListener"`
XMLHttpRequest int `json:"XMLHttpRequest"`
XDomainRequest int `json:"XDomainRequest"`
Emit int `json:"emit"`
DeviceOrientationEvent int `json:"DeviceOrientationEvent"`
DeviceMotionEvent int `json:"DeviceMotionEvent"`
TouchEvent int `json:"TouchEvent"`
Spawn int `json:"spawn"`
Chrome int `json:"chrome"`
FunctionPrototypeBind int `json:"functionPrototypeBind"`
Buffer int `json:"Buffer"`
PointerEvent int `json:"PointerEvent"`
HasInnerWidth int `json:"innerWidth"`
HasOuterWidth int `json:"outerWidth"`
AvailWidth int `json:"availWidth"`
AvailHeight int `json:"availHeight"`
Width int `json:"width"`
Height int `json:"height"`
InnerHeight int `json:"innerHeight"`
InnerWidth int `json:"innerWidth"`
OuterWidth int `json:"outerWidth"`
}
func bd2(a, b int) int {
return a + b
}
func (c *Env) GenEnvStr() int {
return bd2(bd2(bd2(bd2(bd2(bd2(bd2(bd2(bd2(bd2(bd2(bd2(bd2(c.AddEventListener, CO(c.XMLHttpRequest, 1)), CO(c.XDomainRequest, 2)), CO(c.Emit, 3)), CO(c.DeviceOrientationEvent, 4)), CO(c.DeviceMotionEvent, 5)), CO(c.TouchEvent, 6)), CO(c.Spawn, 7)), CO(c.HasInnerWidth, 8)), CO(c.HasOuterWidth, 9)), CO(c.Chrome, 10)), CO(c.FunctionPrototypeBind, 11)), CO(c.Buffer, 12)), CO(c.PointerEvent, 13))
}
func CO(a int, b int) int {
return a << b
}
func NewEnv() *Env {
return &Env{
AddEventListener: 1,
XMLHttpRequest: 1,
XDomainRequest: 0,
Emit: 0,
DeviceOrientationEvent: 1,
DeviceMotionEvent: 1,
TouchEvent: 1,
Spawn: 0,
Chrome: 1,
FunctionPrototypeBind: 1,
Buffer: 0,
PointerEvent: 1,
HasInnerWidth: 1,
HasOuterWidth: 1,
AvailWidth: 2560,
AvailHeight: 980,
Width: 2560,
Height: 1080,
InnerHeight: 901,
InnerWidth: 2560,
OuterWidth: 2560,
}
}
type Navigator struct {
ProductSub string `json:"productSub"`
Language string `json:"language"`
Product string `json:"product"`
Plugins string `json:"plugins"`
}
func NewNavigator() *Navigator {
return &Navigator{
ProductSub: "20030107",
Language: "zh-CN",
Product: "Gecko",
Plugins: "5",
}
}
This diff is collapsed.
package main
import (
"encoding/json"
"fmt"
http "github.com/bogdanfinn/fhttp"
tls_client "github.com/bogdanfinn/tls-client"
"io"
"io/ioutil"
"net/url"
"strings"
"sync"
"test/model"
"time"
)
func query(data []byte) {
v := model.Akm{}
json.Unmarshal(data, &v)
fmt.Println(v)
jar := tls_client.NewCookieJar()
options := []tls_client.HttpClientOption{
tls_client.WithTimeoutSeconds(30),
tls_client.WithClientProfile(tls_client.Chrome_110),
tls_client.WithNotFollowRedirects(),
tls_client.WithCookieJar(jar), // create cookieJar instance and pass it as argument
//tls_client.WithProxyUrl("http://user-unifflcc-region-us:q39CEBTs5A5YQXor@pr.roxlabs.cn:4600"),
tls_client.WithProxyUrl("http://127.0.0.1:8888"),
tls_client.WithInsecureSkipVerify(),
}
uri, _ := url.Parse("https://www.easyjet.com/")
var cookies []*http.Cookie
for key, value := range v.Cookies {
cookies = append(cookies, &http.Cookie{
Name: key,
Value: value,
})
}
jar.SetCookies(uri, cookies)
Client, err := tls_client.NewHttpClient(tls_client.NewNoopLogger(), options...)
req, err := http.NewRequest("GET", "https://www.easyjet.com/ejavailability/api/v66/availability/query?AdditionalSeats=0&AdultSeats=1&ArrivalIata=LGW&ChildSeats=0&DepartureIata=BFS&IncludeAdminFees=true&IncludeFlexiFares=false&IncludeLowestFareSeats=true&IncludePrices=true&Infants=0&IsTransfer=false&LanguageCode=EN&MaxDepartureDate=2023-03-20&MinDepartureDate=2023-03-18", nil)
if err != nil {
panic(err)
}
req.Header = http.Header{
"accept": {"*/*"},
"accept-language": {"de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7"},
"user-agent": {"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36"},
http.HeaderOrderKey: {
"accept",
"accept-language",
"user-agent",
},
}
resp, err := Client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("响应结果", resp.StatusCode)
readBytes, _ := io.ReadAll(resp.Body)
fmt.Println(string(readBytes))
}
func main() {
for i := 0; i < 1; i++ {
t1 := time.Now()
fmt.Println(t1)
wg := sync.WaitGroup{}
for i := 0; i < 2; i++ {
wg.Add(1)
go func() {
defer wg.Done()
//172.29.204.120
//resp, err := http.Post("http://172.29.199.203:9999/get-proxy", "application/x-www-form-urlencoded", strings.NewReader("name=NK&type=other&country=us"))
//resp, err := http.Get("http://127.0.0.1:9999/ping")
//resp, err := http.Post("http://lcc.unififi.com/proxy/get-proxy", "application/json", strings.NewReader("{\n \"name\": \"NK\",\n \"type\": \"shopping\"\n}"))
resp, err := http.Post("http://127.0.0.1:19999/akamai/gen", "application/json", strings.NewReader("{\"type\": \"u2\", \"proxy\": \"http://127.0.0.1:8888\"}"))
if err != nil {
//panic(err)
fmt.Println(err)
return
}
body, _ := ioutil.ReadAll(resp.Body)
query(body)
}()
}
wg.Wait()
fmt.Println("cost", time.Since(t1).String())
time.Sleep(time.Second * 5)
}
}
package util
import (
"encoding/json"
"net/http"
)
func GetPostJson(r *http.Request) map[string]interface{} {
formData := make(map[string]interface{})
// 调用json包的解析,解析请求body
json.NewDecoder(r.Body).Decode(&formData)
return formData
}
package util
import (
"encoding/json"
"fmt"
"net/http"
)
type Response struct {
Code int `json:"code"`
Message string `json:"message"`
Cookies map[string]string `json:"cookies"`
Ua string `json:"ua"`
}
func WriteJson(w http.ResponseWriter, obj interface{}) error {
jsonBytes, err := json.Marshal(obj)
if err != nil {
return err
}
fmt.Fprintln(w, string(jsonBytes))
return nil
}
func ErrorJson(msg string) map[string]interface{} {
res := make(map[string]interface{})
res["code"] = 500
res["message"] = msg
return res
}
func RespJson(msg map[string]interface{}) map[string]interface{} {
res := make(map[string]interface{})
res["code"] = 200
for k, v := range msg {
res[k] = v
}
return res
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment