2021-01-26
go语言如何接品易HTTP demo小课堂
go语言客户,使用代理ip,参考如下demo案例go语言—API教程(下载)go语言—账密教程(下载)go语言—APIpackage mainimport ( "context" "fmt" "golang.org/x/net/proxy" "io/ioutil" "net" "net/http" "net/url" "strings" "time")var testApi = "https://api.myip.la/en?json"func main() { getMyIp() //白名单代理 var proxyIP = "ip:port" go httpProxy(proxyIP, "", "") go Socks5Proxy(proxyIP, "", "") time.Sleep(time.Minute)}func getMyIp() { rsp, err := http.Get("https://api.myip.la/en?json") if err != nil { fmt.Println("获取本机ip失败", err.Error()) return } defer rsp.Body.Close() body, err := ioutil.ReadAll(rsp.Body) if err != nil { fmt.Println(err.Error()) return } fmt.Println(time.Now().Format("2006-01-02 15:04:05 07"), "本机ip:", string(body))}//http代理func httpProxy(proxyUrl, user, pass string) { defer func() { if err := recover(); err != nil { fmt.Println(time.Now().Format("2006-01-02 15:04:05 07"), "http", "返回信息:", err) } }() urli := url.URL{} if !strings.Contains(proxyUrl, "http") { proxyUrl = fmt.Sprintf("http://%s", proxyUrl) } urlProxy, _ := urli.Parse(proxyUrl) if user != "" && pass != "" { urlProxy.User = url.UserPassword(user, pass) } client := &http.Client{ Transport: &http.Transport{ Proxy: http.ProxyURL(urlProxy), }, } rqt, err := http.NewRequest("GET", testApi, nil) if err != nil { panic(err) return } response, err := client.Do(rqt) if err != nil { panic(err) return } defer response.Body.Close() body, _ := ioutil.ReadAll(response.Body) fmt.Println(time.Now().Format("2006-01-02 15:04:05 07"), proxyUrl, "【http success】", "返回信息:", response.Status, string(body)) return}//socks5代理func Socks5Proxy(proxyUrl, user, pass string) { defer func() { if err := recover(); err != nil { fmt.Println(time.Now().Format("2006-01-02 15:04:05 07"), proxyUrl, "返回信息:", err) } }() var userAuth proxy.Auth if user != "" && pass != "" { userAuth.User = user userAuth.Password = pass } dialer, err := proxy.SOCKS5("tcp", proxyUrl, &userAuth, proxy.Direct) if err != nil { panic(err) } httpClient := &http.Client{ Transport: &http.Transport{ DialContext: func(ctx context.Context, network, addr string) (conn net.Conn, err error) { return dialer.Dial(network, addr) }, }, Timeout: time.Second * 10, } //请求网络 if resp, err := httpClient.Get(testApi); err != nil { panic(err) } else { defer resp.Body.Close() body, _ := ioutil.ReadAll(resp.Body) fmt.Println(time.Now().Format("2006-01-02 15:04:05 07"), proxyUrl, "【socks5 success】", "返回信息:", string(body)) }}go语言—账密package mainimport ( "context" "fmt" "golang.org/x/net/proxy" "io/ioutil" "net" "net/http" "net/url" "strings" "time")var testApi = "https://api.myip.la/en?json"func main() { getMyIp() //账密 go httpProxy("ip:port", "账户", "密码") go Socks5Proxy("ip:port", "账户", "密码") time.Sleep(time.Minute)}func getMyIp() { rsp, err := http.Get("https://api.myip.la/en?json") if err != nil { fmt.Println("获取本机ip失败", err.Error()) return } defer rsp.Body.Close() body, err := ioutil.ReadAll(rsp.Body) if err != nil { fmt.Println(err.Error()) return } fmt.Println(time.Now().Format("2006-01-02 15:04:05 07"), "本机ip:", string(body))}//http代理func httpProxy(proxyUrl, user, pass string) { defer func() { if err := recover(); err != nil { fmt.Println(time.Now().Format("2006-01-02 15:04:05 07"), "http", "返回信息:", err) } }() urli := url.URL{} if !strings.Contains(proxyUrl, "http") { proxyUrl = fmt.Sprintf("http://%s", proxyUrl) } urlProxy, _ := urli.Parse(proxyUrl) if user != "" && pass != "" { urlProxy.User = url.UserPassword(user, pass) } client := &http.Client{ Transport: &http.Transport{ Proxy: http.ProxyURL(urlProxy), }, } rqt, err := http.NewRequest("GET", testApi, nil) if err != nil { panic(err) return } response, err := client.Do(rqt) if err != nil { panic(err) return } defer response.Body.Close() body, _ := ioutil.ReadAll(response.Body) fmt.Println(time.Now().Format("2006-01-02 15:04:05 07"), proxyUrl, "【http success】", "返回信息:", response.Status, string(body)) return}//socks5代理func Socks5Proxy(proxyUrl, user, pass string) { defer func() { if err := recover(); err != nil { fmt.Println(time.Now().Format("2006-01-02 15:04:05 07"), proxyUrl, "返回信息:", err) } }() var userAuth proxy.Auth if user != "" && pass != "" { userAuth.User = user userAuth.Password = pass } dialer, err := proxy.SOCKS5("tcp", proxyUrl, &userAuth, proxy.Direct) if err != nil { panic(err) } httpClient := &http.Client{ Transport: &http.Transport{ DialContext: func(ctx context.Context, network, addr string) (conn net.Conn, err error) { return dialer.Dial(network, addr) }, }, Timeout: time.Second * 10, } //请求网络 if resp, err := httpClient.Get(testApi); err != nil { panic(err) } else { defer resp.Body.Close() body, _ := ioutil.ReadAll(resp.Body) fmt.Println(time.Now().Format("2006-01-02 15:04:05 07"), proxyUrl, "【socks5 success】", "返回信息:", string(body)) }}
2021-01-26
Python如何接品易HTTP demo小课堂
Python客户,使用代理ip,参考如下demo案例Python—API教程(下载)Python—账密教程(下载)Python—API# coding=utf-8# !/usr/bin/env pythonimport jsonimport threadingimport timeimport requests as rqheaders = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", "Accept-Encoding": "gzip, deflate, br"}testUrl = 'https://api.myip.la/en?json'# 核心业务def testPost(host, port): proxies = { 'http': 'http://{}:{}'.format(host, port), 'https': 'http://{}:{}'.format(host, port), } res = "" while True: try: res = rq.get(testUrl, proxies=proxies, timeout=5) # print(res.status_code) print(res.status_code, "***", res.text) break except Exception as e: print(e) break returnclass ThreadFactory(threading.Thread): def __init__(self, host, port): threading.Thread.__init__(self) self.host = host self.port = port def run(self): testPost(self.host, self.port)# 提取代理的链接 json类型的返回值tiqu = '提取链接'while 1 == 1: # 每次提取10个,放入线程中 resp = rq.get(url=tiqu, timeout=5) try: if resp.status_code == 200: dataBean = json.loads(resp.text) else: print("获取失败") time.sleep(1) continue except ValueError: print("获取失败") time.sleep(1) continue else: # 解析json数组 print("code=", dataBean["code"]) code = dataBean["code"] if code == 0: threads = [] for proxy in dataBean["data"]: threads.append(ThreadFactory(proxy["ip"], proxy["port"])) for t in threads: # 开启线程 t.start() time.sleep(0.01) for t in threads: # 阻塞线程 t.join() # break time.sleep(1)Python—账密import _threadimport timeimport requestsheaders = { "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Mobile/14G60 MicroMessenger/6.5.19 NetType/4G Language/zh_TW",}mainUrl = 'https://api.myip.la/en?json'def testUrl(): # 账密 entry = 'http://{}:{}@ip:port'.format("账户", "密码") proxy = { 'http': entry, 'https': entry, } try: res = requests.get(mainUrl, headers=headers, proxies=proxy, timeout=10) print(res.status_code, res.text) except Exception as e: print("访问失败", e) passfor port in range(0, 10): _thread.start_new_thread(testUrl, ()) time.sleep(0.1)time.sleep(10)
2021-01-26
PHP如何接品易HTTP demo小课堂
PHP语言客户,使用代理ip,参考如下demo案例PHP语言—API教程(下载)PHP语言—账密教程(下载)PHP语言—API<?php // 要访问的目标页面 $targetUrl = "http://baidu.com"; // 代理服务器 $proxyServer = "http://{{ip}:{{domain}}"; // 隧道身份信息 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $targetUrl); curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 设置代理服务器 curl_setopt($ch, CURLOPT_PROXYTYPE, 0); //http // curl_setopt($ch, CURLOPT_PROXYTYPE, 5); //sock5 curl_setopt($ch, CURLOPT_PROXY, $proxyServer); // 设置隧道验证信息 curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;)"); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); curl_setopt($ch, CURLOPT_TIMEOUT, 5); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); $err = curl_error($ch); curl_close($ch); var_dump($err); var_dump($result);PHP语言—账密<?php // 要访问的目标页面 $targetUrl = "http://baidu.com"; // 代理服务器 $proxyServer = "http://proxy.ipidea.io:2333"; $proxyUserPwd = "{{user}}:{{psswd}}"; // 隧道身份信息 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $targetUrl); curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 设置代理服务器 curl_setopt($ch, CURLOPT_PROXYTYPE, 0); //http // curl_setopt($ch, CURLOPT_PROXYTYPE, 5); //sock5 curl_setopt($ch, CURLOPT_PROXY, $proxyServer); // 设置隧道验证信息 curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727;)"); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); curl_setopt($ch, CURLOPT_TIMEOUT, 5); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyUserPwd); $result = curl_exec($ch); $err = curl_error($ch); curl_close($ch); var_dump($err); var_dump($result);