首页 > 其他分享 >隧道代理怎么用啊?隧道代理GO语言代码示例

隧道代理怎么用啊?隧道代理GO语言代码示例

时间:2022-12-07 18:00:29浏览次数:36  
标签:114.219 http err 示例 IP fmt 代理 115.191 隧道

经常做数据采集的人对隧道代理肯定不陌生,但对于新手小白而言,有可能还是属于未涉及的领域,今天就来看看隧道代理(动态请求)利用GO语言要如何写代码。

普通模式

package main
import (
"fmt"
"io/ioutil"
"net/http"
"net/url"
"sync"
"time"
)
func main() {
authKey := "DA71B637" //隧道代理的AuthKey
password := "162313EF018A" //隧道代理的AuthPwd
proxyServer := "tunnel3.qg.net:19263" //隧道代理的地址
targetURL := "https://d.qg.net/ip"
rawURL := fmt.Sprintf("http://%s:%s@%s", authKey, password, proxyServer)
proxyUrl, _ := url.Parse(rawURL)
client := http.Client{
Transport: &http.Transport{
Proxy: http.ProxyURL(proxyUrl),
},
}
req, _ := http.NewRequest("GET", targetURL, nil)
rsp, err := client.Do(req)
if err != nil {
fmt.Printf("request failed: %s\n", err)
return
}
defer rsp.Body.Close()
body, err := ioutil.ReadAll(rsp.Body)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(string(body))
}
}



打标记模式

package main
import (
"fmt"
"io/ioutil"
"net/http"
"net/url"
"sync"
"time"
)
/** 返回内容
当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
当前 IP:114.219.115.191 来自于:中国 江苏 苏州 电信
当前 IP:14.118.211.116 来自于:中国 广东 江门 电信
*/
func main() {
authKey := "DA71B637" //动态请求隧道的AuthKey
password := "162313EF018A" //动态请求隧道的Password
proxyServer := "tunnel3.qg.net:19263" //动态请求隧道的地址
targetURL := "https://d.qg.net/ip"
rawURL := fmt.Sprintf("http://%s:%s@%s", authKey, password, proxyServer)
proxyUrl, _ := url.Parse(rawURL)
client := http.Client{
Transport: &http.Transport{
ProxyConnectHeader: http.Header{
"Proxy-TunnelID": []string{"channel-1"}, // 在CONNECT连接中新增Proxy-TunnelID打标记
"Proxy-TTL": []string{"10"}, // Proxy-TTL指定该标记IP的存活时间
},
Proxy: http.ProxyURL(proxyUrl),
},
}
// 因为标记的存活时间是10s,所以循环11次中有10次的IP是一样的。
// 第11次因为标记的IP到期了,系统会自动替换IP
wg := sync.WaitGroup{}
wg.Add(11)
for i := 0; i < 11; i++ {
go func() {
defer wg.Done()
req, _ := http.NewRequest("GET", targetURL, nil)
rsp, err := client.Do(req)
if err != nil {
fmt.Printf("request failed: %s\n", err)
return
}
defer rsp.Body.Close()
body, err := ioutil.ReadAll(rsp.Body)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(string(body))
}
}()
time.Sleep(time.Second)
}
wg.Wait()
}


以上就是隧道代理GO语言代码示例啦,有需要的可以自取。

标签:114.219,http,err,示例,IP,fmt,代理,115.191,隧道
From: https://blog.51cto.com/u_15889524/5919866

相关文章

  • uniapp - 设置代理
    uniapp-设置代理HbuilderX找到manifest.json文件,点击源码视图"h5":{"title":"案件要素确认系统","router":{"mode":"hash......
  • 动态代理
    概述什么是动态代理使用JDK的反射机制,创建对象的能力,创建的是代理类的对象,不用自己创建类文件,不用写Java文件。动态:在程序执行时,调用JDK提供的方法才能创建代理......
  • c#中EntityFramework连接MySql数据示例 支持Update部分字段
    c#程序如果要连接数据库,以前使用的是ADO.Net,通过DataSet、DataTable、ExecuteNoQuery等方法完成,现在微软提供EntityFramework(其实已经提供很久了)组件实现。今天的主题就是......
  • <三>function函数对象类型的应用示例
    std::function是一组函数对象包装类的模板,实现了一个泛型的回调机制。function与函数指针比较相似,优点在于它允许用户在目标的实现上拥有更大的弹性,即目标既可以是普通函数......
  • ECharts3D地图(详细示例——附有具体注释)
    ECharts3D地图(详细示例——附有具体注释)3D地图图表效果如下:代码:<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>铜仁市3D地图(点......
  • 【每天一个java设计模式(完)】 - 四万字实现23种设计模式(附示例源码)
    什么是设计模式:​​【每天一个java设计模式(零)】-设计模式基本概念及七大设计原则​​创建型模式工厂模式:​​【每天一个java设计模式(一)】-工厂模式​​抽象工厂模式:......
  • 使用Spring Cloud Stream 驱动 RabbitMQ 代码示例
    1、SpringCloudStream官方文档官方配置文档参考:SpringCloudStreamReferenceDocumentationSpringCloudStreamRabbitMQBinderReferenceGuide说明:在网上查......
  • 代理模式
    代理模式基本介绍    如果不使用代理模式,按照我们传统模式是Client直接调用TargetObject对象。  静态代理  思路分析图解  代码实现packag......
  • 红队隧道应用篇之Netsh端口转发
    简介netsh是从Windows2000开始就有的一个用于配置网络设备的命令行工具其中netshinterfaceportproxy是一个配置网络代理的命令,可以配置ipv4或ipv6的端口转发代理以......
  • Java的两大、三类代理模式
    简述代理,是一种设计模式,主要作用是为其他对象提供一种代理,以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目......