常见问题
产品介绍
代码示例

node.js示例代码

    'use strict';
    
    /**
     * 请确保安装了crawler模块
     * 安装模块:打开NODEJS-->输入npm install crawler
     **/
    
    const Crawler = require('crawler');
    let c = new Crawler();

    //填写您的河马代理API提取接口地址,在http://www.hemadaili.com/extract/blend.html生成链接:
    let getProxyUrl = 'http://api.hemadaili.com/proxy/extract?order=XXXX&count=1&pt=0&fmt=0&sep=2&dd=1';

    //您将要爬取的地址,这里使用http://ip.cip.cc/来检测代理是否启用成功
    let getDocUrl = 'http://ip.cip.cc/';

    //获取代理IP服务器信息
    const getProxy = (url) => {
        return new Promise(function (resolve, rejecte) {
            c.queue([{
                uri: url,
                jQuery: false,
                callback: function (error, res, done) {
                    if (error) {
                        rejecte(error);
                    } else {
                        resolve(res.body);
                    }
                    done();
                }
            }]);
        });
    };

    //获取使用代理后的IP信息
    const getDoc = (url, proxy_ip) => {
        return new Promise(function (resolve, rejecte) {
            c.queue([{
                uri: url,
                jQuery: false,
                //设置HTTP代理
                proxy: proxy_ip,
                callback: function (error, res, done) {
                    if (error) {
                        rejecte(error);
                    } else {
                        resolve(res.body);
                    }
                    done();
                }
            }]);
        });
    };

    //调用
    (async function () {//如果代码有异步操作,必须声明该代码块为异步代码,es7规定用方法将其包含起来,async表明此处为异步执行的代码块

        //await意为需要等待我执行完,此代码块内才能继续向下执行。但是并不影响其它地方。也就是说只有标识为async内的代码块才受await影响成为同步
        let proxyIpPort = await getProxy(getProxyUrl);
        console.log('提取IP地址为:' + proxyIpPort);

        //第一个参数为要爬取的地址,第二个参数为代理IP的地址,都以http开头
        let locIp = await getDoc(getDocUrl, 'http://' + proxyIpPort);
        console.log('当前IP地址为:' + locIp);
        if (proxyIpPort.split(':')[0].trim() === locIp.trim()) {
            console.log("您本次访问的地址和代理IP的地址相同,代理成功,感谢使用河马代理!")
        }
    })();
    'use strict';
    
    /**
     * 请确保安装了依赖模块
     * 安装模块:
     * 打开NODEJS-->输入npm install crawler
     * 打开NODEJS-->输入npm install socks5-http-client
     * 打开NODEJS-->输入npm install request
     **/
    

    const request = require('request');
    const Agent = require('socks5-http-client/lib/Agent');
    const Crawler = require('crawler');
    let c = new Crawler();

    //填写您的河马代理API提取接口地址,在http://www.hemadaili.com/extract/blend.html生成链接:
    let getProxyUrl = 'http://api.hemadaili.com/proxy/extract?order=XXXX&count=1&pt=0&fmt=0&sep=2&dd=1';
    //您将要爬取的地址,这里使用http://ip.cip.cc/来检测代理是否启用成功
    let getDocUrl = 'http://ip.cip.cc/';

    //获取代理IP服务器信息
    const getProxy = (url) => {
        return new Promise(function (resolve, rejecte) {
            c.queue([{
                uri: url,
                jQuery: false,
                callback: function (error, res, done) {
                    if (error) {
                        rejecte(error);
                    } else {
                        resolve(res.body);
                    }
                    done();
                }
            }]);
        });
    };

    //获取使用socks5代理后的IP信息
    const getDoc = (url, proxy_ip, proxy_port) => {
        return new Promise(function (resolve, rejecte) {
            request({
                url: url,
                agentClass: Agent,
                //配置socks5代理
                agentOptions: {
                    socksHost: proxy_ip, // 默认 'localhost'.
                    socksPort: proxy_port // 默认 1080.
                }
            }, function (err, res) {
                if (err) {
                    rejecte(err);
                } else {
                    resolve(res.body);
                }
            });
        });
    };

    //调用
    (async function () {//如果代码有异步操作,必须声明该代码块为异步代码,es7规定用方法将其包含起来,async表明此处为异步执行的代码块
        //await意为需要等待我执行完,此代码块内才能继续向下执行。但是并不影响其它地方。也就是说只有标识为async内的代码块才受await影响成为同步
        let proxyIpPort = await getProxy(getProxyUrl);
        console.log('提取IP地址为:' + proxyIpPort);
        //第一个参数为要爬取的地址,第二个参数为代理IP的地址,都以http开头
        let locIp = await getDoc(getDocUrl, proxyIpPort.split(':')[0], proxyIpPort.split(':')[1]);
        console.log('当前IP地址为:' + locIp);
        if (proxyIpPort.split(':')[0].trim() === locIp.trim()) {
            console.log("您本次访问的地址和代理IP的地址相同,代理成功,感谢使用河马代理!")
        }
    })();