取消
最近搜索
清空历史

代码样例-sdk和代理请求结合使用

本文档包含使用快代理sdk并发送代理请求的代码样例,供开发者参考。

代码样例使用说明

  1. 代码样例不能直接运行,因为代码中的代理服务器、SecretId、SecretKey、用户名username、密码password都是虚构的,您替换成自己真实的信息就可以正常运行了。
  2. 代码样例正常运行所需的运行环境和注意事项在样例末尾均有说明,使用前请仔细阅读。
  3. 使用代码样例过程中遇到问题请联系售后客服,我们会为您提供技术支持。

Python

私密代理使用

私密代理使用样例python3.6通过

使用提示

# -*- 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通过

使用提示

# -*- 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通过

使用提示

# -*- 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 通过

使用提示

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 通过

使用提示

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 通过

使用提示

 /**
 * 使用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通过

使用提示

 /**
 * @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通过

使用提示

/**
 * @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通过

使用提示

 /**
 * @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()
        ;

    }
);
联系我们