i use golang -version = 1.22,
go mod 1.22
and I cannot send http request in golang, while in python aiohttp everything works
code on golang returns 403 response code
code on python or curl returns 200 response code
func main() {
req, err := http.NewRequest(http.MethodGet, "https://ecg-api.gumtree.com.au/api/papi/ads/search", nil)
if err != nil {
log.Fatal("Error creating request:", err)
}
req.Header.Set("user-agent", "")
transport := &http.Transport{
TLSClientConfig: &tls.Config{
MinVersion: 0,
},
DialContext: (&net.Dialer{
Timeout: 5 * time.Second,
KeepAlive: 1 * time.Second,
}).DialContext,
DisableKeepAlives: true,
ForceAttemptHTTP2: true,
TLSNextProto: make(map[string]func(authority string, c *tls.Conn) http.RoundTripper),
MaxConnsPerHost: 15,
MaxIdleConns: 5,
MaxIdleConnsPerHost: 5,
IdleConnTimeout: time.Minute * 2,
TLSHandshakeTimeout: time.Minute * 2,
ResponseHeaderTimeout: time.Second * 20,
ExpectContinueTimeout: time.Second * 20,
}
client := &http.Client{
Timeout: 30 * time.Second,
Transport: transport,
}
response, err := client.Do(req)
if err != nil {
log.Fatal("Error making request:", err)
}
defer response.Body.Close()
if response.StatusCode == http.StatusForbidden {
body, _ := ioutil.ReadAll(response.Body)
log.Fatalf("Received 403 Forbidden: %vnResponse Body: %s", response.Status, string(body))
}
fmt.Println("Response Status:", response.Status)
body, err := ioutil.ReadAll(response.Body)
if err != nil {
log.Fatal("Error reading response body:", err)
}
fmt.Println("Response Body:", string(body))
}
but code on python 3.11 works – 200 response code, where can be problem?
async def fetch():
url = "https://ecg-api.gumtree.com.au/api/papi/ads/search"
headers = {
"Accept": "application/json",
}
async with aiohttp.ClientSession(headers=headers) as session:
async with session.get(
url,
# proxy=proxy,
) as response:
print("Response Status:", response.status)
response_text = await response.text()
print("Response Body:", response_text)
asyncio.run(fetch())
i tried to send http request on golang and expected to recieve 200 response code
on python Im receiving 200 response code, on curl too
for golang 1.19 request worked
what the difference was in tls between 1.19 and 1.20/1.21
4
cipherSuites := make([]uint16, len(tls.CipherSuites()))
for i, suite := range tls.CipherSuites() {
cipherSuites[i] = suite.ID
}
tlsConfig := &tls.Config{
MinVersion: 0,
}
tlsConfig.CipherSuites = cipherSuites
transport := &http.Transport{
TLSClientConfig: tlsConfig,
}