Как можно прикрутить поддержку socks5 ,http,https proxy к Golang скрипту?

Для прикручивания поддержки прокси-серверов socks5, http и https к Golang-скрипту вам понадобится использовать стандартный пакет net/http в сочетании с настройкой транспорта клиента (http.Transport). Давайте рассмотрим каждый тип прокси подробнее.

1. Поддержка SOCKS5 прокси:

Для использования SOCKS5 прокси в Golang, понадобится установить golang.org/x/net/proxy пакет, который предоставляет реализацию клиента SOCKS5. Вы можете установить его с помощью команды:

go get golang.org/x/net/proxy

Затем, в коде скрипта вы можете осуществить подключение к прокси-серверу и настроить клиентский транспорт следующим образом:

package main

import (
	"fmt"
	"net/http"
	"net/url"
	"golang.org/x/net/proxy"
)

func main() {
	// адрес SOCKS5 прокси
	proxyAddress := "socks5://proxy.example.com:1080"
	proxyURL, err := url.Parse(proxyAddress)
	if err != nil {
		fmt.Println("Ошибка при разборе адреса прокси:", err)
		return
	}

	// установка соединения с прокси-сервером
	dialer, err := proxy.FromURL(proxyURL, proxy.Direct)
	if err != nil {
		fmt.Println("Ошибка при установке соединения с прокси:", err)
		return
	}

	// настройка транспорта клиента
	transport := &http.Transport{Dial: dialer.Dial}

	// создание клиента HTTP с настроенным транспортом
	client := &http.Client{Transport: transport}

	// выполнить HTTP-запрос через прокси
	resp, err := client.Get("http://example.com")
	if err != nil {
		fmt.Println("Ошибка при отправке запроса:", err)
		return
	}
	defer resp.Body.Close()

	// обработать ответ
	// ...
}

2. Поддержка HTTP/HTTPS прокси:

Поддержка прокси-сервера для протокола HTTP и HTTPS в Golang уже встроена в пакет net/http. Вам просто необходимо настроить значение поля Transport у клиента HTTP таким образом, чтобы он использовал прокси. Ниже приведен пример кода:

package main

import (
	"fmt"
	"net/http"
	"net/url"
)

func main() {
	// адрес прокси-сервера
	proxyAddress := "http://proxy.example.com:8080"
	proxyURL, err := url.Parse(proxyAddress)
	if err != nil {
		fmt.Println("Ошибка при разборе адреса прокси:", err)
		return
	}

	// настройка транспорта клиента
	transport := &http.Transport{
		Proxy: http.ProxyURL(proxyURL),
	}

	// создание клиента HTTP с настроенным транспортом
	client := &http.Client{Transport: transport}

	// выполнить HTTP-запрос через прокси
	resp, err := client.Get("http://example.com")
	if err != nil {
		fmt.Println("Ошибка при отправке запроса:", err)
		return
	}
	defer resp.Body.Close()

	// обработать ответ
	// ...
}

Таким образом, вы можете легко добавить поддержку SOCKS5, HTTP и HTTPS прокси к вашему Golang-скрипту, используя соответствующие пакеты и настройки транспорта клиента. Не забывайте обрабатывать возможные ошибки для обеспечения грамотной работы с прокси-серверами.