Go HTTP සේවාලාභියාගේ transport ප්‍රොක්සිය තෝරයි. පෙරනිමි සේවාලාභියාගේ අනෙක් භාවිත කරන්නන්ට දැනට ඇති මාර්ග තබාගැනීමට, සම්මත transport වෙනස් කිරීමට පෙර ක්ලෝන කරන්න.

package main

import (
    "fmt"
    "io"
    "log"
    "net/http"
    "net/url"
    "time"
)

func main() {
    proxyURL, err := url.Parse("http://203.0.113.10:8080")
    if err != nil {
        log.Fatal(err)
    }

    transport := http.DefaultTransport.(*http.Transport).Clone()
    transport.Proxy = http.ProxyURL(proxyURL)
    defer transport.CloseIdleConnections()

    client := &http.Client{
        Transport: transport,
        Timeout:   15 * time.Second,
    }

    response, err := client.Get("https://example.com/")
    if err != nil {
        log.Fatal(err)
    }
    defer response.Body.Close()

    fmt.Println(response.StatusCode)
    if _, err := io.Copy(io.Discard, response.Body); err != nil {
        log.Fatal(err)
    }
}

ලිපිනය ලේඛන සඳහා උදාහරණයකි. HTTP ප්‍රොක්සි ලැයිස්තුවෙන් තෝරාගත් එකක් වැනි සැබෑ HTTP ප්‍රොක්සි IP සහ පෝට් එකකින් එය මාරු කරන්න. උදාහරණය Go සම්මත පුස්තකාලය පමණක් භාවිත කරයි; මේ HTTP ප්‍රොක්සි ඉල්ලීමට SOCKS පැකේජයක් හෝ මුළු ක්‍රියාවලියටම බලපාන පරිසර විචල්‍යයක් අවශ්‍ය නැත.

DefaultTransport කෙළින්ම වෙනස් නොකරන්නේ ඇයි?

පෙරනිමි transport හවුලේ භාවිත වේ. එය වෙනස් කිරීම ඔබේ ප්‍රොක්සිය ඉල්ලා නැති කේතයේ හැසිරීමටත් බලපායි. ඉල්ලීම් එය භාවිත කරන අතරේ වෙනස් කිරීම වළක්වාගත හැකි සමගාමීතා ගැටලුද ඇති කරයි. වෙනම transport එකක් මාර්ගය මෙම සේවාලාභියාගේ සැකසුමේ කොටසක් කරයි.

http.ProxyURL සපයා ඇති URL සෑම විටම තෝරන තේරීම් ක්‍රමයක් ලබා දෙයි. එය ප්‍රොක්සි විචල්‍ය හා මඟහැරීමේ නීති සලකන පෙරනිමි පරිසර තේරීමෙන් වෙනස්ය. HTTP ලැයිස්තුවේ එක් නිශ්චිත සටහනක් පරීක්ෂා කිරීමට අවශ්‍ය නම් පැහැදිලි තේරීම මේ අවිනිශ්චිතතාව ඉවත් කරයි.

ප්‍රතිචාරය වසා සේවාලාභියා නැවත භාවිත කරන්න

උදාහරණය ප්‍රතිචාරයේ බොඩිය සම්පූර්ණයෙන් කියවා වසයි. අගටම කියවීම transport හට හැකි විට සම්බන්ධතාව නැවත භාවිත කිරීමට උදව් වේ. එකම ප්‍රොක්සිය හරහා ඉල්ලීම් කිහිපයක් කරන වැඩසටහනක එක් එක් ඉල්ලීමට අලුත් යුගලයක් නොසාදා සේවාලාභියා හා transport තබාගන්න.

සේවාලාභියාගේ කාල සීමාව සොකට් විවෘත කිරීමට පමණක් නොව ප්‍රතිචාර බොඩිය කියවීම ඇතුළු ඉල්ලීමේ ජීවන චක්‍රයටත් අදාළය. Get ආපසු ලැබුණු පසුවත් කියවීමේ දෝෂ හැසිරවිය යුතුය. 403 වැනි තත්ත්වයක් Go transport දෝෂයක් නොවන නිසා StatusCode, err වෙතින් වෙන්ව පරීක්ෂා කරන්න.

අදාළ ලිපි