package mainimport ( "fmt" "io/ioutil" "net/http" "net/url" "sync" "time")/** 返回内容 第一次循环 当前 IP:121.230.91.188 来自于:中国 江苏 泰州 电信 当前 IP:60.184.205.115 来自于:中国 浙江 丽水 电信 当前 IP:125.112.205.149 来自于:中国 浙江 金华 电信 当前 IP:60.184.108.175 来自于:中国 浙江 丽水 电信 当前 IP:58.214.87.31 来自于:中国 江苏 无锡 电信 当前 IP:183.143.131.24 来自于:中国 浙江 湖州 电信 当前 IP:42.53.99.119 来自于:中国 辽宁 锦州 联通 当前 IP:59.60.142.70 来自于:中国 福建 漳州 电信 当前 IP:114.226.175.159 来自于:中国 江苏 常州 电信 当前 IP:123.162.194.223 来自于:中国 河南 驻马店 电信 max channel reached 第二次循环 当前 IP:114.226.175.159 来自于:中国 江苏 常州 电信 当前 IP:60.184.205.115 来自于:中国 浙江 丽水 电信 当前 IP:121.230.91.188 来自于:中国 江苏 泰州 电信 当前 IP:125.112.205.149 来自于:中国 浙江 金华 电信 当前 IP:123.162.194.223 来自于:中国 河南 驻马店 电信 当前 IP:58.214.87.31 来自于:中国 江苏 无锡 电信 当前 IP:183.143.131.24 来自于:中国 浙江 湖州 电信 当前 IP:60.184.108.175 来自于:中国 浙江 丽水 电信 当前 IP:59.60.142.70 来自于:中国 福建 漳州 电信 当前 IP:42.53.99.119 来自于:中国 辽宁 锦州 联通 第二次循环返回的IP与第一次循环相同,因为goroutine是异步的,所以返回顺序和第一次不一致 myip.ipip.net服务器可能比较容易失败,用户可以自己找一个其他获取客户端IP的服务器来测试*/// 固定时长多通道隧道模式func main() { authKey := "请改成您的Key" //固定时长1分钟的隧道,通道数10 password := "请改成您的AuthPwd" proxyServer := "请改成您的隧道地址" //如:tunnel3.qg.net:19263 targetURL := "https://ip.cn/api/index?ip=&type=0" rawURL := fmt.Sprintf("http://%s:%s@%s", authKey, password, proxyServer) proxyUrl, _ := url.Parse(rawURL) wg := sync.WaitGroup{} wg.Add(11) // 十个通道分别使用不同的十个IP,第十一次会返回错误,通道数超出 for i := 0; i < 11; i++ { go func(index int) { defer wg.Done() client := http.Client{ Transport: &http.Transport{ ProxyConnectHeader: http.Header{ "Proxy-TunnelID": []string{fmt.Sprintf("channel-%d", index)}, // 指定通道ID }, 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)) } }(i) } wg.Wait() // 因为固定时长为1分钟,所以在1分钟内继续使用已有通道,仍是之前的IP time.Sleep(time.Second * 10) wg.Add(10) for i := 0; i < 10; i++ { go func(index int) { defer wg.Done() client := http.Client{ Transport: &http.Transport{ ProxyConnectHeader: http.Header{ "Proxy-TunnelID": []string{fmt.Sprintf("channel-%d", index)}, // 指定通道ID }, 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)) } }(i) } wg.Wait()}import requeststargetURL = "https://ip.cn/api/index?ip=&type=0" //要访问的目标地址proxyAddr = "请改成您的隧道地址" //如:tunnel3.qg.net:19263authKey = "请改成您的Key"password = "请改成您的AuthPwd"# 账密模式proxyUrl = "http://%(user)s:%(password)s@%(server)s" % { "user": authKey, "password": password, "server": proxyAddr,}proxies = { "http": proxyUrl, "https": proxyUrl,}for i in range(10): resp = requests.get(targetURL, proxies=proxies) print(resp.text)import base64import timeimport requestsfrom requests.adapters import HTTPAdapterauth_key = "请改成您的Key"password = "请改成您的AuthPwd"tunnel_server = "http://请改成您的隧道地址" //如:tunnel3.qg.net:19263target_url = "https://ip.cn/api/index?ip=&type=0" // 要访问的目标地址proxy_headers = {}proxy = { "http": tunnel_server, "https": tunnel_server}def encode_authorization(key, passwd): # python 使用 bytes 类型进行 base64 编码 basic_str = bytes("%s:%s" % (key, passwd), "ascii") # 得到的返回值也是 bytes 类型,所以需要再 decode 为字符串 return "Basic %s" % base64.b64encode(basic_str).decode("utf-8")def reset_tunnel_proxy_headers(): global proxy_headers proxy_headers = { tunnel_server: { "Proxy-Authorization": encode_authorization(auth_key, password) } }def update_tunnel_proxy_headers(key, val): global proxy_headers proxy_headers[tunnel_server][key] = valdef new_session(): adapter = TunnelProxyAdapter() se = requests.Session() se.mount('https://', adapter) se.mount('http://', adapter) return seclass TunnelProxyAdapter(requests.adapters.HTTPAdapter): def proxy_headers(self, p): if p in proxy_headers: print("session with headers:", proxy_headers[p]) return proxy_headers[p] else: return Nonedef normal_tunnel(): """ 结果类似: request on normal mode session with headers: {'Proxy-Authorization': 'Basic xxxx'} request id: 1, code: 200, result: 140.250.149.229 """ reset_tunnel_proxy_headers() print("request on normal mode") resp = new_session().get(target_url, proxies=proxy) print("request id: 1, code: %s, result: %s" % (resp.status_code, resp.text))def mark_tunnel(): """ 结果类似: request with mark session with headers: {'Proxy-Authorization': 'Basic xxxx', 'Proxy-TunnelID': 'channel-1', 'Proxy-TTL': 10} request id: 1 , code: 200, result: 183.166.118.48 request id: 2 , code: 200, result: 183.166.118.48 request id: 3 , code: 200, result: 183.166.118.48 request id: 4 , code: 200, result: 183.166.118.48 request id: 5 , code: 200, result: 183.166.118.48 request id: 6 , code: 200, result: 183.166.118.48 request id: 7 , code: 200, result: 183.142.59.203 request id: 8 , code: 200, result: 183.142.59.203 request id: 9 , code: 200, result: 183.142.59.203 request id: 10, code: 200, result: 123.54.235.89 """ reset_tunnel_proxy_headers() update_tunnel_proxy_headers("Proxy-TunnelID", "channel-1") update_tunnel_proxy_headers("Proxy-TTL", 10) se = new_session() print("request with mark") for i in range(1, 12): resp = se.get(target_url, proxies=proxy, headers={"Connection": "close"}) print("request id: %-2s, code: %s, result: %s" % (i, resp.status_code, resp.text)) time.sleep(1)if __name__ == "__main__": normal_tunnel() mark_tunnel()package mainimport ( "fmt" "io/ioutil" "net/http" "net/url" "sync" "time")func main() { authKey := "请改成您的Key" password := "请改成您的AuthPwd" proxyServer := "请改成您的隧道地址" //如:tunnel3.qg.net:19263 targetURL := "https://ip.cn/api/index?ip=&type=0" 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 mainimport ( "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 := "请改成您的Key" password := "请改成您的AuthPwd" proxyServer := "请改成您的隧道的地址" //如:tunnel3.qg.net:19263 targetURL := "https://ip.cn/api/index?ip=&type=0" 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()}1.备份原有的yum库
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
![]()
2.下载新的CentOS-Base.repo 到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

3.添加EPEL
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

4.清理缓存并生成新的缓存
yum clean all
yum makecache

5.这样就安装完成了
1.首先在APPSTOR下载“Microsoft Remote Desktop”应用

2.在打开的“Microsoft Remote Desktop”窗口中,单击“New”图标按钮,来创建一个新的远程主机

3.根据图片上得文字描述,输入需要连接的用户名密码,和ip地址。
PC Name:这里输入你要连接的远程计算机IP地址
UserName:平时登录计算机的用户名
Password:登录计算机的密码
输入以上信息后,直接关闭窗口就可以了,系统会自动保存

4.新建远程计算机后,在列表内就会出现了,您只需要双击就可以连接了

6.当您双击列表开始连接后,正常就会看到这个提示框了,单击“Continue”继续就可以了

7.Yes,已经成功连接至Windows系统了

在Windows 7系统下如何解决宽带连接提示错误692问题呢?

出现此错误提示可能是频繁拨号导致,此时需要重启下系统。打开“运行”,输入shutdown -r -t 0,然后点击“确定”即可重启。重启后即可恢复

1.打开“运行”,输入gpedit.msc,打开本地组策略编辑器

2.按计算机配置→管理模板→Windows组件→远程桌面服务→远程桌面会话主机→连接,进入到如图所示界面

3.双击“限制连接的数量”

4.点选“已启用”,在“允许的RD最大连接数”设置为999999,然后点击“确定”


6.点选“已禁用”,然后点击“确定”即可

7.安装UniversalTermsrvPatch补丁破解远程功能限制
将UniversalTermsrvPatch补丁复制到机器中,右键“以管理员身份运行”

开启UniversalTermsrvPatch后,点击“破解”

提示Patch Success(成功),确认重启机器即可。

隧道代理是我们基于高性能主机构建的动态IP代理服务器,通过将换IP操作放到云端,让用户使用更简单。
用户无须更换IP,隧道代理会将用户发送的请求转发到不同的代理IP,转发周期可按需购买。
使用隧道代理,开发者接入隧道服务即可,极大简化了编程的复杂度。
隧道代理同时支持HTTP和Socks协议,提供丰富的换IP周期,并采用弹性请求数控制,默认为5个请求数,需要更多的请求数需额外购买。
隧道代理使用极为便捷,参照代码样例可集成到您的程序中。

隧道代理适合希望代理自动切换IP的客户。
支持日付、周付、月付、年付等多种按时付费模式。
您可以在购买时指定隧道的换IP周期,既可以每次请求转发到1个新IP,也可以每隔一段时间转发到1个新IP,目前IP转发间隔时长有1分钟、3分钟、5分钟。
隧道共享代理同时支持通过用户密钥访问和设置IP白名单访问。
用户密钥、白名单设置在会员中心业务管理可查看和设置。
隧道代理最主要的使用方式是编程使用,您无需调用API提取代理,在会员中心将隧道信息(隧道地址和密钥信息等)放入代码样例中运行通过就可以用起来了。
点击屏幕右下方的小电脑图样,打开网络和共享中心。

2:设置新的连接或网络。

3:选择“连接到工作区”点击下一步。

4:选择创建新连接,点击下一步

5:如图示,点击“使用我的internet连接”进入下一步

6:如图示填入提供的带有端口的服务器地址,勾选现在不连接;仅进行设置选项,点击下一步。

7:输入账号密码勾选记住此密码。点击创建

8:创建完成后点击立即连接,连接成功。
