go - 如何使用 https 和 socks4 代理
问题描述
我在golang中找不到这样做的方法,所以我在问。
我有各种代理(http://~、https://~ 等)
将接受 http://ip:port 和 socks5://ip:port 的请求,但不接受 https://ip:port 和 sock4://ip:port 的请求。
我应该怎么办?
是将其分配给环境变量的唯一方法吗?
package main
import (
"fmt"
"net/http"
"net/url"
)
func main(){
req, _ := http.NewRequest("GET", site URL, nil)
req.Close = true
var proxy string = "proxy"
a, _ := url.Parse(proxy)
i := &http.Transport{
Proxy: http.ProxyURL(a),
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
client := &http.Client{
Transport: i,
}
resp, _ := client.Do(req)
defer resp.Body.Close()
doc, _ := goquery.NewDocumentFromReader(resp.Body)
fmt.Println(doc)
}
解决方案
以下代码在我的最后工作正常
package main
import (
"fmt"
"net/http"
"net/url"
)
func main(){
req, _ := http.NewRequest("GET", site URL, nil)
req.Close = true
var proxy string = "proxy"
a, _ := url.Parse(proxy)
i := &http.Transport{
Proxy: http.ProxyURL(a),
//Proxy: http.ProxyFromEnvironment,
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
TLSNextProto: make(map[string]func(authority string, c *tls.Conn) http.RoundTripper),
}
client := &http.Client{}
client.Transport = i
resp, err := client.Do(req)
if err != nil {
log.Fatalln(err)
return
}
defer resp.Body.Close()
doc, _ := goquery.NewDocumentFromReader(resp.Body)
fmt.Println(doc)
}
我希望它对你有同样的帮助
推荐阅读
- assembly - 我在反汇编 MSVC 输出时经常看到的函数 jmp 指令表是什么?
- twilio - 使用 Twilio 功能的定时器功能
- python - 识别具有相同值的下一行并创建新的列熊猫数据框
- python - 在python中获取坐标列表的平均值
- google-cloud-platform - 将服务帐户添加到实例并授予访问范围所需的权限
- javascript - 这是预期的 PouchDb 性能吗?
- css - 如何用 BEM 组织 CSS?
- ruby-on-rails - Rails 5.2 的路由语法是否发生了很大变化
- javascript - 如何使用 JavaScript 在 HTML 表中显示 MySQL 数据库条目?
- sql - 为什么 SQL/RDBMS 不支持在子查询上应用聚合函数?