У меня проблема с одним запросом с Golang.
Он всегда возвращает ошибку EOF или «соединение сброшено одноранговым узлом» .
Однако, когда я использую другой язык, например Python (с использованием пакета «запросы») и curl , он успешно возвращает ответ.
Здесь у меня есть пример кода для этого запроса и соответствующая команда curl (я изменил конфиденциальную информацию, например файлы cookie) :
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
var (
URL = "https://p4-msg.chat.zalo.me/?zpw_ver=49&zpw_type=30¶ms=1456344318999,1456344318999,eyIxIjp7Imxhc3RJZCI6IjE0NTYzNDQzMTg5OTkiLCJpZHMiOlsiMTQ1NjM0NDMxODk5OSIsIjE0NTYzNDQzMTg5OTkiXX0sIjIiOnsibGFzdElkIjoiMTQ1NjM0NDMxODk5OSIsImlkcyI6W119LCIzIjp7Imxhc3RJZCI6IjE0NTYzNDQzMTg5OTkiLCJpZHMiOlsiMTQ1NjM0NDMxODk5OSIsIjE0NTYzNDQzMTg5OTkiLCIxNDU2MzQ0MzE4OTk5IiwiMTQ1NjM0NDMxODk5OSIsIjE0NTYzNDQzMTg5OTkiLCIxNDU2MzQ0MzE4OTk5IiwiMTQ1NjM0NDMxODk5OSIsIjE0NTYzNDQzMTg5OTkiLCIxNDU2MzQ0MzE4OTk5Il19fQ%3D%3D%2C1&ts=1587720743"
Cookie = "__zi=3000.AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.1; __zi-legacy=3000.AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.1; fpsend=333333; zpsid=AAAA.333.3.1; zpsidleg=AAAA.333.3.1; zpw_sekm=AAAA.333.3.2; app.event.zalo.me=3333333333333333333; _zlang=vn; zpw_sek=AAAA.333.a0.F-AAAAAAAAAAAAAAAAAAAA-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB"
Headers = map[string]string{
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:75.0) Gecko/20100101 Firefox/75.0",
"Accept": "application/json, text/plain",
"Accept-Language": "en-US,en;q=0.5",
"Content-Type": "application/x-www-form-urlencoded",
"Connection": "keep-alive",
//"Cookie": Cookie,
}
)
/*
CURL Command:
curl "https://p4-msg.chat.zalo.me/?zpw_ver=49&zpw_type=30¶ms=1456344318999,1456344318999,eyIxIjp7Imxhc3RJZCI6IjE0NTYzNDQzMTg5OTkiLCJpZHMiOlsiMTQ1NjM0NDMxODk5OSIsIjE0NTYzNDQzMTg5OTkiXX0sIjIiOnsibGFzdElkIjoiMTQ1NjM0NDMxODk5OSIsImlkcyI6W119LCIzIjp7Imxhc3RJZCI6IjE0NTYzNDQzMTg5OTkiLCJpZHMiOlsiMTQ1NjM0NDMxODk5OSIsIjE0NTYzNDQzMTg5OTkiLCIxNDU2MzQ0MzE4OTk5IiwiMTQ1NjM0NDMxODk5OSIsIjE0NTYzNDQzMTg5OTkiLCIxNDU2MzQ0MzE4OTk5IiwiMTQ1NjM0NDMxODk5OSIsIjE0NTYzNDQzMTg5OTkiLCIxNDU2MzQ0MzE4OTk5Il19fQ%3D%3D%2C1&ts=1587720743" -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:75.0) Gecko/20100101 Firefox/75.0' -H 'Accept: application/json, text/plain' -H 'Accept-Language: en-US,en;q=0.5' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Connection: keep-alive' -H 'Cookie: __zi=3000.AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.1; __zi-legacy=3000.AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.1; fpsend=333333; zpsid=AAAA.333.3.1; zpsidleg=AAAA.333.3.1; zpw_sekm=AAAA.333.3.2; app.event.zalo.me=3333333333333333333; _zlang=vn; zpw_sek=AAAA.333.a0.F-AAAAAAAAAAAAAAAAAAAA-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB'
*/
func main() {
curl := fmt.Sprintf(`curl "%s"`, URL)
client := http.DefaultClient
request, err := http.NewRequest("GET", URL, nil)
if err != nil {
fmt.Println("new request error", err.Error())
return
}
for k, v := range Headers {
curl = fmt.Sprintf("%s -H '%s: %s'", curl, k, v)
request.Header.Set(k, v)
}
for _, v := range strings.Split(Cookie, ";") {
if len(v) < 1 {
continue
}
tmp := strings.Split(v, "=")
if len(tmp) < 2 {
continue
}
request.AddCookie(&http.Cookie{
Name: tmp[0],
Value: tmp[1],
Path: "",
Domain: "p4-msg.chat.zalo.me",
Expires: time.Time{},
RawExpires: "",
MaxAge: 0,
Secure: false,
HttpOnly: false,
SameSite: 0,
Raw: "",
Unparsed: nil,
})
}
fmt.Println(curl)
resp, err := client.Do(request)
if err != nil {
fmt.Println("request error", err.Error())
return
}
defer resp.Body.Close()
content, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("read body error", err.Error())
return
}
fmt.Printf("response: %s\n", content)
}
EDIT : Я добавил раздел AddCook ie. Результат все тот же.