住宅IP
动态机房IP
手机IP
HTTP/HTTPS
SOCKS5
请求切换
到期时间切换
TXT
JSON
HTML
回车换行(\r\n)
回车(\r)
换行(\n)
Tab(\t)
自定义字符
| 名称 | 类型 | 必选 | 说明 |
|---|---|---|---|
| num | int | 是 | 提取ip数量 |
| country | string | 否 | 国家 查看国家代码 |
| protocol | string | 否 | 协议(http:HTTP/HTTPS socks5:SOCKS5) |
| format | string | 否 | 数据格式:TXT:1 JSON:2 HTML:3 |
| sep | int | 否 | 分隔符(1:\r\n 2:/br 3:\r 4:\n 5:\t 6 :自定义分隔符) |
| csep | string | 否 | 自定义分隔符 |
{
"code": 0,
"success": true,
"msg": "0",
"data": [
{"ip": "47.244.192.12", "port": 16098},
{"ip": "47.244.192.12", "port": 15698}
]
}
| 名称 | 类型 | 说明 |
|---|---|---|
| IP | string | IP地址 |
| POST | int | 端口号 |
生成API链接,调用HTTP GET请求即可返回所需的IP结果 ,可以直接按照以下格式组装所需的API链接
提取IP接口
https://api.haiwaidaili.net/abroad?token=[APPKEY]&num=1&format=1&protocol=http&country=&sep=1&csep=
添加白名单接口
https://haiwaidaili.net/index/user/save_white/appid/[APPID]/appkey/[APPKEY].html?white=您的ip
删除白名单接口
https://haiwaidaili.net/index/user/del_white/appid/[APPID]/appkey/[APPKEY].html?white=您的ip
获取白名单接口
https://haiwaidaili.net/index/user/white_list/appid/[APPID]/appkey/[APPKEY].html?format=simple
HTTP/HTTPS
SOCKS5
随机访问
固定访问
| 代理服务器 | 端口 | ||
| 子账号 | 当前密码 |
*由於政策原因,此服務建議在非中國大陸網絡環境下使用,感謝您的理解!
参数注释:
| 名称 | 类型 | 必选 | 说明 |
| country | string | 否 | 国家代码标识 |
| session | string | 否 | 需要固定一个ip时配置,用户自定义,注意:需由1-32位数字组成,不然会断网。 |
| USERNAME | string | 否 | 子账号名称 |
| PASWORD | string | 否 | 子账号密码 |
| type | string | 否 | 固定为dc ,表示使用动态机房IP / 固定为mobile ,表示使用手机IP |
·用子账号访问动态住宅的账密格式
user-USERNAME-country-COUNTRYCODE-session-SESSION:PASWORD
其中:
USERNAME: 子账号名称,
COUNTRYCODE: 国家代码 SESSION: sessionid 有32位以内的随机数组成 PASWORD: 子账号密码
示例:
# 访问美国 curl --socks5 user-sub.[USERNAME]-country-us-session-SESSION:[PASSWORD]@proxy.haiwai-ip.com:1456 "http://ip123.in/ip.json" -vv
·用子账号访问动态机房的账密格式
user-USERNAME-country-COUNTRYCODE-session-SESSION-type-dc:PASWORD
其中:
USERNAME: 子账号名称,
COUNTRYCODE: 国家代码 SESSION: sessionid 由32位以内的随机数组成 PASWORD: 子账号密码 type: 固定为dc ,表示使用动态机房IP / 固定为mobile ,表示使用手机IP
示例:
# 访问美国 固定出口IP curl --socks5 user-sub.[USERNAME]-country-us-session-123456-type-dc:[PASSWORD]@proxy.haiwai-ip.com:1456 "http://ip123.in/ip.json" -vv
实例:
// demo.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "curl/curl.h"
#pragma comment(lib, "libcurl.lib")
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)
{
curl_easy_setopt(curl, CURLOPT_PROXY,"http://测试ip:端口");
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)buff);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_buff;
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 10L);
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:代理");
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)buff);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_buff;
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 10L);
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 50L);
curl_easy_setopt(curl, CURLOPT_MAX_RECV_SPEED_LARGE, 200;
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_easy_init();
if (curl)
{
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)buff);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_buff;
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 10L);
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 50L);
curl_easy_setopt(curl, CURLOPT_MAX_RECV_SPEED_LARGE, 200;
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);
GetUrl("http://baidu.com", buff);
printf("不使用代理%s\n", buff);
memset(buff, 0, 1024 * 1024);
GetUrlHTTP("http://baidu.com", buff);
printf("http结果%s\n", buff);
memset(buff, 0,1024 * 1024);
GetUrlSocks5("http://baidu.com", buff);
printf("socks5结果%s\n", buff);
Sleep(1000 * 1000);
free(buff);
return 0;
}
实例:
package main
import (
"fmt"
"io/ioutil"
"net/http"
"net/url"
)
//sock5代理
func socksproxy() {
urli := url.URL{}
urlproxy, _ := urli.Parse("http://测试ip:端口")
client := &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyURL(urlproxy),
},
}
rqt, err := http.NewRequest("GET", "http://myip.top", nil)
if err != nil {
println("接口获取IP失败!")
return
}
rqt.Header.Add("User-Agent", "Lingjiang")
//处理返回结果
response, _ := client.Do(rqt)
defer response.Body.Close()
body, err := ioutil.ReadAll(response.Body)
if err != nil {
return
}
fmt.Println("socks5:", string(body))
return
}
//http代理
func httpproxy() {
urli := url.URL{}
urlproxy, _ := urli.Parse("http://测试ip:端口")
client := &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyURL(urlproxy),
},
}
rqt, err := http.NewRequest("GET", "http://myip.top", nil)
if err != nil {
println("接口获取IP失败!")
return
}
rqt.Header.Add("User-Agent", "Lingjiang")
//处理返回结果
response, _ := client.Do(rqt)
defer response.Body.Close()
body, err := ioutil.ReadAll(response.Body)
if err != nil {
return
}
fmt.Println("http:", string(body))
return
}
//本机IP
func httplocal() {
client := &http.Client{}
rqt, err := http.NewRequest("GET", "http://myip.top", nil)
if err != nil {
println("接口获取IP失败!")
return
}
rqt.Header.Add("User-Agent", "Lingjiang")
//处理返回结果
response, _ := client.Do(rqt)
defer response.Body.Close()
body, err := ioutil.ReadAll(response.Body)
if err != nil {
return
}
fmt.Println("本机:", string(body))
return
}
func main() {
httplocal()
httpproxy()
socksproxy()
}
实例:
//node代理请求http
var http = require('http')
var opt = {
host: 'tunnel.alicloudecs.com',//这里放代理服务器的ip或者域名
port: '500',//这里放代理服务器的端口号
method: 'GET',//这里是发送的方法
path: 'http://www.sdip.321174.com/', //这里是访问的路径
}
//以下是接收数据的代码
var body = '';
var req = http.request(opt, function (res) {
console.log("Got response: " + res.statusCode);
res.on('data', function (d) {
body += d;
}).on('end', function () {
console.log(res.headers)
console.log(body)
});
}).on('error', function (e) {
console.log("Got error: " + e.message);
})
req.end();
//node代理请求http/https
const fetch = require("node-fetch");
const HttpsProxyAgent = require('https-proxy-agent');
//这里是访问的路径
let url="https://www.baidu.com/s?cl=3&tn=baidutop10&fr=top1000&wd=%E9%AB%98%E8%80%83&rsv_idx=2&rsv_dl=fyb_n_homepage&hisfilter=1";
//这是代理服务器地址
let ip='58.218.205.48';
//这是端口号
let port='500';
fetch(url, {
method: 'GET',
// body: null,
agent: new HttpsProxyAgent("http://" + ip + ":" + port) //<==注意是 `http://`
}).then(function (res) {
console.log("Response Headers ============ ");
res.headers.forEach(function(v,i,a) {
console.log(i+" : "+v);
});
return res.text();
}).then(function (res) {
console.log("Response Body ============ ");
console.log(res);
});
实例:
Php http/sock5:
// 要访问的目标页面
$targetUrl = "http://baidu.com";
// 代理服务器
$proxyServer = "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 60; 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);
HttpClient:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
public class ClientProxyHttpClientHttp {
// 代理服务器
final static String proxyHost = "xxx";
final static Integer proxyPort = 0;
private static HttpHost proxy = null;
private static RequestConfig reqConfig = null;
static {
proxy = new HttpHost(proxyHost, proxyPort, "http");
reqConfig = RequestConfig.custom().setConnectionRequestTimeout(5000).setConnectTimeout(10000) // 设置连接超时时间
.setSocketTimeout(10000) // 设置读取超时时间
.setExpectContinueEnabled(false).setProxy(new HttpHost(proxyHost, proxyPort))
.setCircularRedirectsAllowed(true) // 允许多次重定向
.build();
}
public static void main(String[] args) {
doGetRequest();
doPostRequest();
}
public static void doGetRequest() {
// 目标地址
String targetUrl = "http://httpbin.org/get";
try {
// 设置url参数 (可选)
Map urlParams = new HashMap<>();
urlParams.put("uid", "1234567");
String paramStr = EntityUtils.toString(new UrlEncodedFormEntity(paramsAdapter(urlParams), "UTF-8"));
HttpGet httpGet = new HttpGet(targetUrl + "?" + paramStr);
String result = doRequest(httpGet);
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void doPostRequest() {
try {
// 要访问的目标页面
HttpPost httpPost = new HttpPost("http://httpbin.org/post");
// 设置表单参数
Map formParams = new HashMap<>();
formParams.put("uid", "1234567");
UrlEncodedFormEntity uefEntity = new UrlEncodedFormEntity(paramsAdapter(formParams), "utf-8");
httpPost.setEntity(uefEntity);
String result = doRequest(httpPost);
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 设置请求头
*
* @param httpReq
*/
private static void setHeaders(HttpRequestBase httpReq) {
httpReq.setHeader("User-Agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36");
httpReq.addHeader("xxx", "xxx");
}
/**
* 执行请求
*
* @param httpReq
* @return
*/
public static String doRequest(HttpRequestBase httpReq) {
String result = new String();
httpReq.setConfig(reqConfig);
try {
// 设置请求头
setHeaders(httpReq);
CloseableHttpClient httpClient = HttpClients.createDefault();
// 执行请求
CloseableHttpResponse httpResp = httpClient.execute(httpReq);
// 保存Cookie
// 获取http code
int statusCode = httpResp.getStatusLine().getStatusCode();
System.out.println(statusCode);
HttpEntity entity = httpResp.getEntity();
if (entity != null) {
result = EntityUtils.toString(entity, "utf-8");
}
httpResp.close();
httpClient.close();
httpReq.abort();
} catch (Exception e) {
e.printStackTrace();
return null;
}
return result;
}
/**
* 参数适配器,将系统定义的请求参数转换成HttpClient能够接受的参数类型
*
* @param params
* 系统定义的请求参数
* @return HttpClient要求的参数类型
*/
private static List paramsAdapter(Map map) {
List nvps = new ArrayList();
for (Entry entry : map.entrySet()) {
nvps.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
return nvps;
}
}
http:
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Authenticator;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
/**
*
* @author librabin
*
*/
public class ClientProxyBasicHttp {
public static void main(String args[]) throws Exception {
// 目标地址
String targetUrl = "http://httpbin.org/get";
// 代理服务器
String proxyHost = "xxx";
int proxyPort = 0;
// http代理: Proxy.Type.HTTP, socks代理: Proxy.Type.SOCKS
Proxy.Type proxyType = Proxy.Type.HTTP;
// 代理验证
String proxyUser = "xxx";
String proxyPwd = "xxx";
try {
// 设置验证
Authenticator.setDefault(new ProxyAuthenticator(proxyUser, proxyPwd));
// 创建代理服务器
InetSocketAddress addr = new InetSocketAddress(proxyHost, proxyPort);
Proxy proxy = new Proxy(proxyType, addr);
// 访问目标网页
URL url = new URL(targetUrl);
URLConnection conn = url.openConnection(proxy);
// 读取返回数据
InputStream in = conn.getInputStream();
// 将返回数据转换成字符串
System.out.println(IO2String(in));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 将输入流转换成字符串
*
* @param inStream
* @return
* @throws IOException
*/
public static String IO2String(InputStream inStream) throws IOException {
ByteArrayOutputStream result = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = inStream.read(buffer)) != -1) {
result.write(buffer, 0, len);
}
String str = result.toString(StandardCharsets.UTF_8.name());
return str;
}
static class ProxyAuthenticator extends Authenticator {
private String authUser, authPwd;
public ProxyAuthenticator(String authUser, String authPwd) {
this.authUser = authUser;
this.authPwd = authPwd;
}
public PasswordAuthentication getPasswordAuthentication() {
return (new PasswordAuthentication(authUser, authPwd.toCharArray()));
}
}
}
socks5:
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
/**
*
* @author librabin
*
*/
public class ClientProxyBasicSocks {
public static void main(String args[]) throws Exception {
// 目标地址
String targetUrl = "http://httpbin.org/get";
// 代理服务器
String proxyHost = "xxx";
int proxyPort = 0;
// http代理: Proxy.Type.HTTP, socks代理: Proxy.Type.SOCKS
Proxy.Type proxyType = Proxy.Type.SOCKS;
try {
// 创建代理服务器
InetSocketAddress addr = new InetSocketAddress(proxyHost, proxyPort);
Proxy proxy = new Proxy(proxyType, addr);
// 访问目标网页
URL url = new URL(targetUrl);
URLConnection conn = url.openConnection(proxy);
// 读取返回数据
InputStream in = conn.getInputStream();
// 将返回数据转换成字符串
System.out.println(IO2String(in));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 将输入流转换成字符串
*
* @param inStream
* @return
* @throws IOException
*/
public static String IO2String(InputStream inStream) throws IOException {
ByteArrayOutputStream result = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = inStream.read(buffer)) != -1) {
result.write(buffer, 0, len);
}
String str = result.toString(StandardCharsets.UTF_8.name());
return str;
}
}
实例:
Python http/sock5:
#coding=utf-8
import requests
#请求地址
targetUrl = "http://baidu.com"
#代理服务器
proxyHost = "ip"
proxyPort = "port"
proxyMeta = "http://%(host)s:%(port)s" % {
"host" : proxyHost,
"port" : proxyPort,
}
#pip install -U requests[socks] socks5代理
# proxyMeta = "socks5://%(host)s:%(port)s" % {
# "host" : proxyHost,
# "port" : proxyPort,
# }
proxies = {
"http" : proxyMeta,
}
resp = requests.get(targetUrl, proxies=proxies)
print resp.status_code
print resp.text
实例:
Python selenium http/socks5:
#coding=utf-8
from selenium import webdriver
# 代理服务器
proxyHost = "ip"
proxyPort = "port"
proxyType='http' #socks5
# 代理隧道验证信息
service_args = [
"--proxy-type=%s" % proxyType,
"--proxy=%(host)s:%(port)s" % {
"host" : proxyHost,
"port" : proxyPort,
}
]
# 要访问的目标页面
targetUrl = "http://baidu.com"
driver = webdriver.PhantomJS(service_args=service_args)
driver.get(targetUrl)
print driver.title
print driver.page_source.encode("utf-8")
driver.quit()
电话客服

微信客服


