代码样例-sdk和代理请求结合使用
本文档包含使用快代理sdk并发送代理请求的代码样例,供开发者参考。
代码样例使用说明
- 代码样例不能直接运行,因为代码中的代理服务器、SecretId、SecretKey、用户名
username
、密码password
都是虚构的,您替换成自己真实的信息就可以正常运行了。 - 代码样例正常运行所需的运行环境和注意事项在样例末尾均有说明,使用前请仔细阅读。
- 使用代码样例过程中遇到问题请联系售后客服,我们会为您提供技术支持。
Python
私密代理使用
私密代理使用样例python3.6通过
使用提示
- 请先导入
kdl
库 - 导入 kdl 包 ,
pip install kdl
或者 github源码下载
# -*- coding: utf-8 -*-
"""私密代理使用示例
接口鉴权说明:
目前支持的鉴权方式有 "token" 和 "hmacsha1" 两种,默认使用 "token"鉴权。
所有方法均可添加关键字参数sign_type修改鉴权方式。
"""
import kdl
auth = kdl.Auth("test_secret_id", "test_secret_key")
client = kdl.Client(auth)
# 获取订单到期时间, 返回时间字符串
expire_time = client.get_order_expire_time()
print("expire time", expire_time)
# 获取ip白名单, 返回ip列表
ip_whitelist = client.get_ip_whitelist()
print("ip whitelist", ip_whitelist)
# 设置ip白名单,参数类型为字符串或列表或元组,一分钟后生效
# 成功则返回True, 否则抛出异常
client.set_ip_whitelist([])
client.set_ip_whitelist("171.113.244.40,171.113.244.41")
# print(client.get_ip_whitelist())
client.set_ip_whitelist(tuple())
# 提取私密代理ip, 第一个参数为提取的数量, 其他参数以关键字参数的形式传入(不需要传入signature和timestamp)
# 具体有哪些参数请参考帮助中心: "https://www.kuaidaili.com/doc/api/getdps/"
# 返回ip列表
# 注意:若您使用的是python2, 且在终端调用,或在文件中调用且没有加 "# -*- coding: utf-8 -*-" 的话
# 传入area参数时,请传入unicode类型,如 area=u'北京,上海'
ips = client.get_dps(2, sign_type='hmacsha1', format='json', pt=1, area='北京,上海,广东')
print("dps proxy: ", ips)
# 检测私密代理有效性: 返回 ip: true/false 组成的dict
ips = client.get_dps(2, sign_type='token', format='json')
valids = client.check_dps_valid(ips)
print("valids: ", valids)
# 获取私密代理剩余时间: 返回 ip: seconds(剩余秒数) 组成的dict
ips = client.get_dps(5, format='json')
seconds = client.get_dps_valid_time(ips)
print("seconds: ", seconds)
# 获取计数版ip余额
balance = client.get_ip_balance(sign_type='hmacsha1')
print("balance: ", balance)
独享代理使用
独享代理使用样例python3.6通过
使用提示
- 请先导入
kdl
库 - 导入 kdl 包 ,
pip install kdl
或者 github源码下载
# -*- coding: utf-8 -*-
"""独享代理使用示例
接口鉴权说明:
目前支持的鉴权方式有 "token" 和 "hmacsha1" 两种,默认使用 "token"鉴权。
所有方法均可添加关键字参数sign_type修改鉴权方式。
"""
import kdl
auth = kdl.Auth("test_secret_id", "test_secret_key")
client = kdl.Client(auth)
# 获取订单到期时间, 返回时间字符串
expire_time = client.get_order_expire_time()
print("expire time", expire_time)
# 获取ip白名单, 返回ip列表
ip_whitelist = client.get_ip_whitelist()
print("ip whitelist", ip_whitelist)
# 设置ip白名单,参数类型为字符串或列表或元组,一分钟后生效
# 成功则返回True, 否则抛出异常
client.set_ip_whitelist([])
client.set_ip_whitelist("127.0.0.1, 192.168.0.139")
# print(client.get_ip_whitelist())
client.set_ip_whitelist(tuple())
# 提取独享代理ip, 第一个参数为提取的数量, 其他参数以关键字参数的形式传入(不需要传入signature和timestamp)
# 具体有哪些参数请参考帮助中心: "https://www.kuaidaili.com/doc/api/getdps/"
# 返回ip列表
# 注意:若您使用的是python2, 且在终端调用,或在文件中调用且没有加 "# -*- coding: utf-8 -*-" 的话
# 传入area参数时,请传入unicode类型,如 area=u'北京,上海'
ips = client.get_kps(2, sign_type='hmacsha1', format='json', pt=1, area='北京,上海,广东')
print("kps proxy: ", ips)
隧道代理使用
隧道代理使用样例python3.6通过
使用提示
- 请先导入
kdl
库 - 导入 kdl 包 ,
pip install kdl
或者 github源码下载
# -*- coding: utf-8 -*-
"""隧道代理使用示例
接口鉴权说明:
目前支持的鉴权方式有 "token" 和 "hmacsha1" 两种,默认使用 "token"鉴权。
所有方法均可添加关键字参数sign_type修改鉴权方式。
"""
import kdl
auth = kdl.Auth("test_secret_id", "test_secret_key")
client = kdl.Client(auth)
expire_time = client.get_order_expire_time()
print("expire time:",expire_time)
# 获取ip白名单, 返回ip列表
ip_whitelist = client.get_ip_whitelist()
print("ip whitelist:", ip_whitelist)
# 设置ip白名单,参数类型为字符串或列表或元组,一分钟后生效
# 成功则返回True, 否则抛出异常
client.set_ip_whitelist([])
client.set_ip_whitelist("171.113.244.40")
# print(client.get_ip_whitelist())
# 显示隧道代理当前的ip
ip = client.tps_current_ip()
print("current_ip:",ip)
# 改变当前隧道ip
new_ip = client.change_tps_ip()
print("new_ip:",new_ip)
API接口提取代理IP和代理使用结合
requests python3.6通过
使用提示
- 基于requests的代码样例支持访问http,https网页,推荐使用
- requests不是python原生库,需要安装才能使用:
pip install requests
- 请先导入
kdl
库 - 导入 kdl 包 ,
pip install kdl
或者 github源码下载
# -*- coding: utf-8 -*-
"""API接口提取代理IP和代理使用结合"""
import requests
import kdl
import random
auth = kdl.Auth("test_secret_id", "test_secret_key")
client = kdl.Client(auth)
# 提取私密代理ip, 第一个参数为提取的数量, 其他参数以关键字参数的形式传入(不需要传入signature和timestamp)
# 具体有哪些参数请参考帮助中心: "https://www.kuaidaili.com/doc/api/getdps/"
# 返回ip列表
# 注意:若您使用的是python2, 且在终端调用,或在文件中调用且没有加 "# -*- coding: utf-8 -*-" 的话
# 传入area参数时,请传入unicode类型,如 area=u'北京,上海'
ips = client.get_dps(2, sign_type='hmacsha1', format='json', pt=1, area='北京,上海,广东')
# print("dps proxy: ", ips)
# 要访问的目标网页
page_url = "https://dev.kdlapi.com/testproxy/"
# 代理服务器
proxy = random.choice(ips)
# 用户名和密码(私密代理/独享代理)
username = "username"
password = "password"
proxies = {
"http": "http://%(user)s:%(pwd)s@%(proxy)s/" % {'user': username, 'pwd': password, 'proxy': proxy},
"https": "http://%(user)s:%(pwd)s@%(proxy)s/" % {'user': username, 'pwd': password, 'proxy': proxy}
}
headers = {
"Accept-Encoding": "Gzip", # 使用gzip压缩传输数据让访问更快
}
res = requests.get(url=page_url, proxies=proxies, headers=headers)
print(res.status_code) # 获取Reponse的返回码
if res.status_code == 200:
print(res.content.decode('utf-8')) # 获取页面内容
Java
私密代理使用
私密代理使用样例 jdk- 11.05 通过
使用提示
- 导入 kdl 包 , Maven安装 或者 github源码下载
import kdl.Auth;
import kdl.Client;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
* 私密代理使用示例
* 接口鉴权说明:
* 目前支持的鉴权方式有 "token" 和 "hmacsha1" 两种,默认使用 "token"鉴权。
*/
public class useDps {
public static void main(String[] args) throws Exception {
Auth auth = new Auth("yoursecretid", "yoursecretkey");
Client client = new Client(auth);
// ---------------------------------------------------------------------------
// 获取订单到期时间,默认token鉴权, 返回时字符串
String expire_time = client.get_order_expire_time();
System.out.println("expire_time: " + expire_time);
// 获取订单到期时间, 用hmacsha1鉴权
expire_time = client.get_order_expire_time("hmacsha1");
System.out.println("expire_time using hmacsha1: " + expire_time);
// ----------------------------------------------------------------------------
// 获取ip白名单, 默认token鉴权, 返回String[] ip数组
String[] ip_whitelist = client.get_ip_whitelist();
System.out.println("ip_whitelist: " + Arrays.toString(ip_whitelist));
// 获取ip白名单, hmacsha1方式鉴权
ip_whitelist = client.get_ip_whitelist("hmacsha1");
System.out.println("ip_whitelist using hmacsha1: " + Arrays.toString(ip_whitelist));
// -------------------------------------------------------------------------------
// 设置ip白名单, 无返回值, 默认token鉴权,要设置的ip白名单可为字符串(IP之间用逗号隔开)或数组
client.set_ip_whitelist("127.0.0.1, 192.168.0.139");
client.set_ip_whitelist("", "hmacsha1");
client.set_ip_whitelist(new String[]{"127.0.0.1", "192.168.0.139"}, "hmacsha1");
client.set_ip_whitelist(new String[]{});
// --------------------------------------------------------------------------------
/* 获取私密代理, 第一个参数为提取数量, int类型, 必填。 第二个参数为其他参数, Map<String, Object>类型, 可选。
* 具体有哪些参数可参考帮助中心api说明: https://help.kuaidaili.com/api/intro/
* 返回String[] 代理数组
**/
String[] dps_proxies = client.get_dps(10);
System.out.println("dps_proxies: " + Arrays.toString(dps_proxies));
Map<String, Object> params = new HashMap<String, Object>();
params.put("sign_type", "hmacsha1");
params.put("area", "北京, 上海, 云南, 广州");
dps_proxies = client.get_dps(10, params);
System.out.println("dps_proxies using other params: " + Arrays.toString(dps_proxies));
// ---------------------------------------------------------------------------------
// 检测私密代理有效性, 默认token鉴权, 返回 Map<String, Boolean> 类型, 格式为 proxy: true/false
Map<String, Boolean> valids = client.check_dps_valid(dps_proxies, "hmacsha1");
System.out.println("dsp valids: " + Arrays.toString(valids.entrySet().toArray()));
// --------------------------------------------------------------------------------
// 获取计数版订单ip余额, 返回ip余额, int类型
int ip_balance = client.get_ip_balance();
System.out.println("ip_balance: " + ip_balance);
// ----------------------------------------------------------------------------------
// 获取私密代理剩余时间(秒数), 返回 Map<String, Integer> 类型, 格式为 proxy: seconds(秒数)
String[] ips = client.get_dps(5)
Map<String, Integer> seconds = client.get_dps_valid_time(ips)
System.out.println("seconds: " + Arrays.toString(seconds.entrySet().toArray()));
}
}
独享代理使用
独享代理使用样例 jdk- 11.05 通过
使用提示
- 导入 kdl 包 , Maven安装 或者 github源码下载
import kdl.Auth;
import kdl.Client;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
* 独享代理使用示例
* 接口鉴权说明:
* 目前支持的鉴权方式有 "token" 和 "hmacsha1" 两种,默认使用 "token"鉴权。
*/
public class useKps {
public static void main(String[] args) throws Exception {
Auth auth = new Auth("yoursecretid", "yoursecretkey");
Client client = new Client(auth);
// ---------------------------------------------------------------------------
// 获取订单到期时间,默认token鉴权, 返回时字符串
String expire_time = client.get_order_expire_time();
System.out.println("expire_time: " + expire_time);
// 获取订单到期时间, 用hmacsha1鉴权
expire_time = client.get_order_expire_time("hmacsha1");
System.out.println("expire_time using hmacsha1: " + expire_time);
// ----------------------------------------------------------------------------
// 获取ip白名单, 默认token鉴权, 返回String[] ip数组
String[] ip_whitelist = client.get_ip_whitelist();
System.out.println("ip_whitelist: " + Arrays.toString(ip_whitelist));
// 获取ip白名单, hmacsha1方式鉴权
ip_whitelist = client.get_ip_whitelist("hmacsha1");
System.out.println("ip_whitelist using hmacsha1: " + Arrays.toString(ip_whitelist));
// -------------------------------------------------------------------------------
// 设置ip白名单, 无返回值, 默认token鉴权,要设置的ip白名单可为字符串(IP之间用逗号隔开)或数组
client.set_ip_whitelist("127.0.0.1, 192.168.0.139");
client.set_ip_whitelist("", "hmacsha1");
client.set_ip_whitelist(new String[]{"127.0.0.1", "192.168.0.139"}, "hmacsha1");
client.set_ip_whitelist(new String[]{});
// --------------------------------------------------------------------------------
/* 获取独享代理, 第一个参数为提取数量, int类型, 必填。 第二个参数为其他参数, Map<String, Object>类型, 可选。
* 具体有哪些参数可参考帮助中心api说明: https://help.kuaidaili.com/api/intro/
* 返回String[] 代理数组
**/
String[] kps_proxies = client.get_kps(10);
System.out.println("kps_proxies: " + Arrays.toString(kps_proxies));
Map<String, Object> params = new HashMap<String, Object>();
params.put("sign_type", "hmacsha1");
params.put("area", "北京, 上海, 云南, 广州");
kps_proxies = client.get_kps(10, params);
System.out.println("kps_proxies using other params: " + Arrays.toString(kps_proxies));
}
}
API接口提取代理IP和代理使用结合
API接口提取代理IP和代理使用结合 jdk- 11.05 通过
使用提示
- 导入 kdl 包 , Maven安装 或者 github源码下载
/**
* 使用jdk原生库请求代理服务器
* 请求http和https网页均适用
* 运行环境要求: jdk >= 1.6 , kdl
*/
package com.demo;
import java.util.HashMap;
import java.util.Map;
import kdl.Auth;
import kdl.Client;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
/**
* 使用jdk原生库请求代理服务器
* 请求http和https网页均适用
* 运行环境要求: jdk >= 1.6
*/
public class TestProxy {
private static String pageUrl = "http://www.baidu.com/"; //要访问的目标网页
private static String proxyIp = "113.121.37.158"; //代理服务器IP
private static String proxyPort = "16277"; //代理服务器端口
private static String username = "username"; //用户名
private static String password = "password"; //密码
public static void main(String[] args) throws Exception {
Auth auth = new Auth("yoursecretid", "yoursecretkey");
Client client = new Client(auth);
/* 获取私密代理, 第一个参数为提取数量, int类型, 必填。 第二个参数为其他参数, Map<String, Object>类型, 可选。
* 具体有哪些参数可参考帮助中心api说明: https://help.kuaidaili.com/api/intro/
* 返回String[] 代理数组
*/
String[] dps_proxies = client.get_dps(1);
String IpHost = dps_proxies[0];
String [] IpAndHost = IpHost.split(":");
TestProxy.proxyIp = IpAndHost[0];
TestProxy.proxyPort = IpAndHost[1];
HttpRequest request = new HttpRequest();
Map<String, String> params = new HashMap<String, String>();
Map<String, String> headers = new HashMap<String, String>();
headers.put("Accept-Encoding", "gzip"); //使用gzip压缩传输数据让访问更快
Map<String, String> proxySettings = new HashMap<String, String>();
proxySettings.put("ip", proxyIp);
proxySettings.put("port", proxyPort);
proxySettings.put("username", username);
proxySettings.put("password", password);
try{
HttpResponse response = request.sendGet(pageUrl, params, headers, proxySettings);
System.out.println(response.getCode());
System.out.println(response.getContent());
}
catch (Exception e) {
e.printStackTrace();
}
}
}
Node.js
私密代理使用
私密代理使用样例 node -v12通过
使用提示
- 请先导入
kdl
库 - 导入 kdl 包 ,
npm install kdl
或者github源码下载
/**
* @file 私密代理使用示例
* 接口鉴权说明:
* 目前支持的鉴权方式有 "token" 和 "hmacsha1" 两种,默认使用 "token"鉴权。
* 所有方法均可添加关键字参数signType修改鉴权方式。
* @author www.kuaidaili.com
*/
const Client = require('../kdl/client'); //引入的方式会因为导入kdl包方式的方式而略有不同
const Auth = require('../kdl/auth');
auth = new Auth('yoursecretid','yoursecretkey');
client = new Client(auth);
// 获取订单到期时间
client.getOrderExpireTime('token').then(
value => {
console.log(value);
}
);
// 获取ip白名单
client.getIpWhitelist('hmacsha1').then(
value => {
console.log(value);
}
);
// 设置白名单 参数为字符串。如下
client.setIpWhitelist("171.113.244.24,171.113.244.41", 'hmacsha1').then(value => {});
// 提取私密代理ip
// 构造请求参数。具体看
// https://www.kuaidaili.com/doc/api/getdps/
params = {
format:'json',
pt:1,
area:'北京,上海,广东',
};
client.getDpsProxy(5,'hmacsha1',params).then(
value => {
console.log(value);
}
);
// 检测dps_proxy的有效性
params = {
format:'json',
pt:1,
area:'北京,上海,广东',
};
client.getDpsProxy(5,'hmacsha1',params).then(
value => {
client.checkDpsValid(value,'hmacsha1').then(
value => {
console.log(value);
}
);
}
);
// 获取私密代理ip的有效时长
params = {
format:'json',
pt:1,
area:'北京,上海,广东',
};
client.getDpsProxy(5,'hmacsha1',params).then(
value => {
client.getDpsValidTime(value,'hmacsha1').then(
value => {
console.log(value);
}
);
}
);
// 获取订单IP提取余额
// 此接口只对按量付费订单和包年包月的集中提取型订单有效:
// 对于按量付费订单,此接口返回的是订单的剩余IP提取额度。
// 对于包年包月的集中提取型订单,此接口返回的是今日剩余的IP提取额度。
client.getIpBalance('hmacsha1').then(value => {
console.log(value);
});
独享代理使用
独享代理使用样例 node -v12通过
使用提示
- 请先导入
kdl
库 - 导入 kdl 包 ,
npm install kdl
或者 github源码下载
/**
* @file 独享代理使用示例
* 接口鉴权说明:
* 目前支持的鉴权方式有 "token" 和 "hmacsha1" 两种,默认使用 "token"鉴权。
* 所有方法均可添加关键字参数signType修改鉴权方式。
* @author www.kuaidaili.com
*/
const Client = require('../kdl/client');
const Auth = require('../kdl/auth');
auth = new Auth('yoursecretid','yoursecretkey');
client = new Client(auth);
// 获取订单到期时间
client.getOrderExpireTime('hmacsha1').then(
value => {
console.log(value);
}
);
// 获取ip白名单
client.getIpWhitelist('hmacsha1').then(
value => {
console.log(value);
}
);
// 设置白名单 参数为字符串。如下
client.setIpWhitelist("171.113.244.55,171.113.244.41",'hmacsha1').then(value => {});
// 提取独享代理ip
// 构造请求参数。具体看
// https://www.kuaidaili.com/doc/api/getkps/
params = {
format:'json',
pt:1,
area:'北京,上海,广东',
};
client.getKpsProxy(5,'hmacsha1',params).then(
value => {
console.log(value);
}
);
隧道代理使用
隧道代理使用样例 node -v12通过
使用提示
- 请先导入
kdl
库 - 导入 kdl 包 ,
npm install kdl
或者 github源码下载
/**
* @file 隧道代理使用示例
* 接口鉴权说明:
* 目前支持的鉴权方式有 "token" 和 "hmacsha1" 两种,默认使用 "token"鉴权。
* 所有方法均可添加关键字参数signType修改鉴权方式。
* @author www.kuaidaili.com
*/
const Client = require('../kdl/client');
const Auth = require('../kdl/auth');
auth = new Auth('yoursecretid','yoursecretkey');
client = new Client(auth);
// 获取订单到期时间
client.getOrderExpireTime('hmacsha1').then(
value => {
console.log(value);
}
);
// 获取ip白名单
client.getIpWhitelist('hmacsha1').then(
value => {
//console.log('value的值为:');
console.log(value);
}
);
// 设置白名单 参数为字符串。如下
client.setIpWhitelist("171.113.244.20,171.113.244.41",'hmacsha1').then(value => {});
// 显示当前隧道代理ip
client.tpsCurrentIp('hmacsha1').then(value=>{
console.log(value);
});
// 修改当前隧道代理ip
client.changeTpsIp('hmacsha1').then(
value => {
console.log(value);
}
);
API接口提取代理IP和代理使用结合
标准库(http,https均适用) node -v12通过
使用提示
- http,https均适用
- 请先导入
kdl
库 - 导入 kdl 包 ,
npm install kdl
或者 github源码下载
/**
* @API接口提取代理IP和代理使用结合
* 接口鉴权说明:
* 目前支持的鉴权方式有 "token" 和 "hmacsha1" 两种,默认使用 "token"鉴权。
* 所有方法均可添加关键字参数signType修改鉴权方式。
* @author www.kuaidaili.com
*/
const http = require("http"); // 引入内置http模块
const url = require("url");
//导入 kdl 包 , npm install kdl 或者 github源码下载
const Auth = require('../kdl/auth'); //引入的方式会因为导入kdl包方式的方式而略有不同
const Client = require('../kdl/client');
auth = new Auth('yoursecretid','yoursecretkey');
client = new Client(auth);
// 要访问的目标页面
const targetUrl = "https://dev.kuaidaili.com/testproxy";
const urlParsed = url.parse(targetUrl);
// 代理验证信息
const username = "yourusername";
const password = "yourpassword";
const base64 = new Buffer.from(username + ":" + password).toString("base64");
// 提取私密代理ip
// 构造请求参数。具体看
// https://www.kuaidaili.com/doc/api/getdps/
params = {
format:'json',
pt:1, //提取类型,这里提取为http代理,2 表示socks代理
};
client.getDpsProxy(1,'hmacsha1',params).then(
value => {
console.log(value[0]);
const options = {
host : value[0].split(":")[0], // 分隔出的ip
port : value[0].split(":")[1], // 分隔出的port
path : targetUrl,
method : "GET",
headers : {
"Host" : urlParsed.hostname,
"Proxy-Authorization" : "Basic " + base64
}
};
http.request(options, (res) => {
console.log("got response: " + res.statusCode);
// 输出返回内容(使用了gzip压缩)
if (res.headers['content-encoding'] && res.headers['content-encoding'].indexOf('gzip') != -1) {
let zlib = require('zlib');
let unzip = zlib.createGunzip();
res.pipe(unzip).pipe(process.stdout);
} else {
// 输出返回内容(未使用gzip压缩)
res.pipe(process.stdout);
}
})
.on("error", (err) => {
console.log(err);
})
.end()
;
}
);