package main
import (
"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 requests
targetURL = "https://ip.cn/api/index?ip=&type=0" //要访问的目标地址
proxyAddr = "请改成您的隧道地址" //如:tunnel3.qg.net:19263
authKey = "请改成您的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 base64
import time
import requests
from requests.adapters import HTTPAdapter
auth_key = "请改成您的Key"
password = "请改成您的AuthPwd"
tunnel_server = "http://请改成您的隧道地址" //如:tunnel3.qg.net:19263
target_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] = val
def new_session():
adapter = TunnelProxyAdapter()
se = requests.Session()
se.mount('https://', adapter)
se.mount('http://', adapter)
return se
class 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 None
def 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 main
import (
"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 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 := "请改成您的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,然后点击“确定”即可重启。重启后即可恢复
尊敬的飞网客户:
2022年五一即将到来,飞网祝您节日快乐,合家辛福!
飞网五一放假安排如下:
2022年4月30日至5月4日放假调休,共5天。5月5日正常上班。
假期如果您想购买我们产品,请直接在网站上在线支付购买,目前网站支持支付宝等在线支付方式,在线支付的客户全部是即时到帐,直接在线购买开通。
如果您是银行付款,请付款后电话至4007-567-365,财务会在10分种内给您处理好。
售后服务方面,假期您的售后服务专员QQ可能不在线,如有急事打公司值班手机18936527027,我们会在10分钟内为您提供所要的服务。
顺祝商祺!
江苏山阳网络科技有限公司
2022年4月28日
山东日照联通已上新,请需要的速度采购
https://www.fwvps.com/business/s9q/sdrzlt.html
四川省达州联通
https://www.fwvps.com/business/s9q/scsdzlt.html
2022-6-1
1.打开“运行”,输入gpedit.msc,打开本地组策略编辑器
2.按计算机配置→管理模板→Windows组件→远程桌面服务→远程桌面会话主机→连接,进入到如图所示界面
3.双击“限制连接的数量”
4.点选“已启用”,在“允许的RD最大连接数”设置为999999,然后点击“确定”
6.点选“已禁用”,然后点击“确定”即可
7.安装UniversalTermsrvPatch补丁破解远程功能限制
将UniversalTermsrvPatch补丁复制到机器中,右键“以管理员身份运行”
开启UniversalTermsrvPatch后,点击“破解”
提示Patch Success(成功),确认重启机器即可。
对于动态共享代理、隧道共享代理、动态独享代理、静态独享代理,我们都提供了API接口,方便开发者。
接口返回数据的格式支持文本、json、xml。
所有接口支持 HTTP 或者 HTTPS 请求,部分接口采用 GET 方法,部分接口采用 POST 方法,具体请参见接口文档。
接口类型 | 接口名称 |
---|---|
动态共享代理相关接口 | - 申请IP资源 - 获取IP资源池 - 查询IP资源 - 通道配额 - 查询白名单IP - 添加白名单IP - 删除白名单IP - 查询区域资源 |
动态独享代理相关接口 | - 申请IP资源 - 查询IP资源 - 通道配额 - 释放IP资源 - 更换IP资源 - 查询白名单IP - 添加白名单IP - 删除白名单IP - 查询区域资源 |
隧道共享代理相关接口 | - 查询白名单IP - 添加白名单IP - 删除白名单IP |
静态独享代理相关接口 | - 申请IP资源 - 查询IP资源 - 释放IP资源 - 通道配额 - 查询白名单IP - 添加白名单IP - 删除白名单IP - 查询区域资源 |
对于代理提取API,您可以到提取工具在线生成API链接,内置到您的程序中:
其他接口请查看API文档,获取接口url和参数说明,自己生成API链接。
浏览器测试
您可以把生成的API链接直接在浏览器里打开,查看返回结果。例如,您直接点击如下api链接
https://www.fwvps.com/query?Key=请改成您的key
命令行测试
如果您在linux系统下,可以通过curl命令请求API链接查看结果:
curl "https://www.fwvps.com/allocate?Key=请改成您的Key
公共错误码
错误码 | 描述 |
---|---|
-1 | 未知错误 |
-10 | 参数不合法 |
-11 | 请求过于频繁 |
-100 | 计划不存在或已过期 |
-101 | 请求数量超过计划通道数 |
-102 | 没有剩余可用的通道数 |
-103 | 资源不足 |
-104 | 资源申请失败 |
-02 | 白名单数量超过限制 |
每个接口自己的错误码请参见各接口文档。
查看API调用的代码样例 >>