2021-07-14
Python如何接品易海外HTTP demo小课堂
代码参考: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(): username = '账户' password = '密码' entry = 'http://{}:{}@host:port'.format(username, password) 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)# 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"}targetUrl = "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(targetUrl, 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 = 'http://tiqu.py.cn/getProxyIp?num=10®ions=kr&return_type=json'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)import stringimport timeimport zipfilefrom selenium import webdriverdef create_proxyauth_extension(proxy_host, proxy_port, proxy_username, proxy_password, scheme='http', plugin_path=None): if plugin_path is None: # 插件地址 plugin_path = 'vimm_chrome_proxyauth_plugin.zip' manifest_json = """ { "version": "1.0.0", "manifest_version": 2, "name": "Chrome Proxy", "permissions": [ "proxy", "tabs", "unlimitedStorage", "storage", "<all_urls>", "webRequest", "webRequestBlocking" ], "background": { "scripts": ["background.js"] }, "minimum_chrome_version":"22.0.0" } """ background_js = string.Template( """ var config = { mode: "fixed_servers", rules: { singleProxy: { scheme: "${scheme}", host: "${host}", port: parseInt(${port}) }, bypassList: ["foobar.com"] } }; chrome.proxy.settings.set({value: config, scope: "regular"}, function() {}); function callbackFn(details) { return { authCredentials: { username: "${username}", password: "${password}" } }; } chrome.webRequest.onAuthRequired.addListener( callbackFn, {urls: ["<all_urls>"]}, ['blocking'] ); """ ).substitute( host=proxy_host, port=proxy_port, username=proxy_username, password=proxy_password, scheme=scheme, ) with zipfile.ZipFile(plugin_path, 'w') as zp: zp.writestr("manifest.json", manifest_json) zp.writestr("background.js", background_js) return plugin_path#proxyauth_plugin_path = create_proxyauth_extension( proxy_host="host", proxy_port="port", proxy_username="账户", proxy_password="密码")option = webdriver.ChromeOptions()option.add_argument("--start-maximized")option.add_extension(proxyauth_plugin_path)# 将配置放入浏览器驱动browser = webdriver.Chrome(options=option)time.sleep(1)# 设置访问的目标网站browser.get('https://api.myip.la/en?json')
2021-07-14
Java语言如何接品易海外HTTP demo小课堂
HttpAuthProxyimport okhttp3.Credentials;import okhttp3.OkHttpClient;import okhttp3.Request;import java.io.IOException;import java.net.InetSocketAddress;import java.net.Proxy;/** * compile 'com.squareup.okhttp3:okhttp:3.10.0' */class HttpAuthProxy { public static void main(String[] args) throws IOException { testWithOkHttp(); } public static void testWithOkHttp() throws IOException { String url = "https://api.myip.la/en?json"; Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("代理地址", 8080)); OkHttpClient client = new OkHttpClient().newBuilder().proxy(proxy).proxyAuthenticator((route, response) -> { String credential = Credentials.basic("账户", "密码"); return response.request().newBuilder() .header("Proxy-Authorization", credential) .build(); }).build(); Request request = new Request.Builder().url(url).build(); okhttp3.Response response = client.newCall(request).execute(); String responseString = response.body().string(); System.out.println(responseString); }}HttpProxyimport okhttp3.OkHttpClient;import okhttp3.Request;import java.io.IOException;import java.net.InetSocketAddress;import java.net.Proxy;/** * compile 'com.squareup.okhttp3:okhttp:3.10.0' */class HttpProxy { public static void main(String[] args) throws IOException { testWithOkHttp(); } public static void testWithOkHttp() throws IOException { String url = "https://api.myip.la/en?json"; Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("ip", 2000)); OkHttpClient client = new OkHttpClient().newBuilder().proxy(proxy).build(); Request request = new Request.Builder().url(url).build(); okhttp3.Response response = client.newCall(request).execute(); String responseString = response.body().string(); System.out.println(responseString); }}Socks5AuthProxyimport okhttp3.OkHttpClient;import okhttp3.Request;import java.io.IOException;import java.net.InetSocketAddress;import java.net.PasswordAuthentication;import java.net.Proxy;/** * <p> * compile 'com.squareup.okhttp3:okhttp:3.10.0' */class Socks5AuthProxy { public static void main(String[] args) throws IOException { testWithOkHttp(); } public static void testWithOkHttp() throws IOException { String url = "https://api.myip.la/en?json"; Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("代理地址", 8080)); java.net.Authenticator.setDefault(new java.net.Authenticator() { private PasswordAuthentication authentication = new PasswordAuthentication("账户", "密码".toCharArray()); @Override protected PasswordAuthentication getPasswordAuthentication() { return authentication; } }); OkHttpClient client = new OkHttpClient().newBuilder().proxy(proxy).build(); Request request = new Request.Builder().url(url).build(); okhttp3.Response response = client.newCall(request).execute(); String responseString = response.body().string(); System.out.println(responseString); }}Socks5Proxyimport okhttp3.OkHttpClient;import okhttp3.Request;import java.io.IOException;import java.net.InetSocketAddress;import java.net.Proxy;/** * compile 'com.squareup.okhttp3:okhttp:3.10.0' */class Socks5Proxy { public static void main(String[] args) throws IOException { testWithOkHttp(); } public static void testWithOkHttp() throws IOException { String url = "https://api.myip.la/en?json"; Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("ip", 8080)); OkHttpClient client = new OkHttpClient().newBuilder().proxy(proxy).build(); Request request = new Request.Builder().url(url).build(); okhttp3.Response response = client.newCall(request).execute(); String responseString = response.body().string(); System.out.println(responseString); }}Java语言客户,参考如下demo案例:Java语言下载教程
2021-07-14
PHP如何接品易海外HTTP demo小课堂
Php http/sock5:// 要访问的目标页面 $targetUrl = "http://baidu.com"; // 代理服务器 $proxyServer = "http":"http://ip:port"; // 隧道身份信息 $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); curl_close($ch); var_dump($result);
2021-07-13
go语言如何接品易海外HTTP
go语言启用代理ip: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()//ip端口var proxyIP = "ip:port"go httpProxy(proxyIP, "", "")//账密go httpProxy("ip:port", "账户", "密码")go Socks5Proxy("ip:port", "账户", "密码")time.Sleep(time.Minute)}func getMyIp() {rsp, err := http.Get("http://myip.top")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))}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}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.Authif user != "" && pass != "" {userAuth.User = useruserAuth.Password = pass}dialer, err := proxy.SOCKS5("tcp", proxyUrl, &userAuth, proxy.Direct)if err != nil {panic(err)}// setup a http clienthttpClient := &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-07-13
C语言如何接品易海外HTTP
定义控制台应用程序的入口点:#include "stdafx.h"#include "curl/curl.h"#pragma comment(lib, "libcurl.lib")//curl 回调函数static size_t write_buff_data(char *buffer, size_t size, size_t nitems, void *outstream){//把接收的数据拷贝到缓存中memcpy(outstream, buffer, nitems*size);return nitems*size;}/*使用http代理*/int GetUrlHTTP(char *url, char *buff){CURL *curl;CURLcode res;curl = curl_easy_init();if (curl){ //设置http代理地址curl_easy_setopt(curl, CURLOPT_PROXY,"http://测试ip:端口"); //设置读写缓存curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)buff) //设置回调函数curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_buff_data); //设置url地址curl_easy_setopt(curl, CURLOPT_URL, url); //设置一个长整形数,控制多少秒传送curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 10L); CURLOPT_LOW_SPEED_LIMIT规定的字节数 //设置一个长整形数,控制传送多少字节;;curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 50L); /*下载最高速度*/curl_easy_setopt(curl, CURLOPT_MAX_RECV_SPEED_LARGE, 2000000L);res = curl_easy_perform(curl);curl_easy_cleanup(curl);if (res == CURLE_OK){return res;}else {printf("错误代码:%d\n", res);MessageBox(NULL, TEXT("获取IP错误"), TEXT("助手"), MB_ICONINFORMATION | MB_YESNO);}}return res;} 使用socks5代理: int GetUrlSocks5(char *url, char *buff){CURL *curl;CURLcode res;curl = curl_easy_init();if (curl){curl_easy_setopt(curl, CURLOPT_PROXY, "socks5://测试ip:端口");//设置socks5代理地址curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)buff);//设置读写缓存curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_buff_data);//设置回调函数curl_easy_setopt(curl, CURLOPT_URL, url);//设置url地址curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 10L);//设置一个长整形数,控制多少秒传送CURLOPT_LOW_SPEED_LIMIT规定的字节数curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 50L);//设置一个长整形数,控制传送多少字节;curl_easy_setopt(curl, CURLOPT_MAX_RECV_SPEED_LARGE, 2000000L);/*下载最高速度*/res = curl_easy_perform(curl);curl_easy_cleanup(curl);if (res == CURLE_OK) {return res;}else {printf("错误代码:%d\n", res);MessageBox(NULL, TEXT("获取IP错误"), TEXT("助手"), MB_ICONINFORMATION | MB_YESNO);}}return res;}int GetUrl(char *url, char *buff){CURL *curl;CURLcode res;//使用的curl库 初始化curl库curl = curl_easy_init();if (curl){curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)buff);//设置读写缓存curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_buff_data);//设置回调函数curl_easy_setopt(curl, CURLOPT_URL, url);//设置url地址curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 10L);//设置一个长整形数,控制多少秒传送CURLOPT_LOW_SPEED_LIMIT规定的字节数curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 50L);//设置一个长整形数,控制传送多少字节curl_easy_setopt(curl, CURLOPT_MAX_RECV_SPEED_LARGE, 2000000L);/*下载最高速度*/res = curl_easy_perform(curl);curl_easy_cleanup(curl);if (res == CURLE_OK){return res;}else {printf("错误代码:%d\n", res);MessageBox(NULL, TEXT("获取IP错误"), TEXT("助手"), MB_ICONINFORMATION | MB_YESNO);}}return res;}int main(){char *buff=(char*)malloc(1024*1024);memset(buff, 0, 1024 * 1024); 不使用http代理: GetUrl("http://baidu.com", buff);printf("不使用代理:%s\n", buff); 使用http代理 memset(buff, 0, 1024 * 1024);GetUrlHTTP("http://baidu.com", buff);printf("http结果:%s\n", buff);//使用socks5代理memset(buff, 0,1024 * 1024);GetUrlSocks5("http://baidu.com", buff);printf("socks5结果:%s\n", buff);Sleep(1000 * 1000);free(buff); return 0;} 重点:C语言客户,参考如下demo案例:C语言下载教程