敏敏张的博客 http://blog.okbase.net/yiniuyun Java实例——基于jsoup的简单爬虫添加代理示例 http://blog.okbase.net/yiniuyun/archive/56310.html yiniuyun 2019-5-8 17:17:00  

import java.io.IOException;

import java.net.Authenticator;

import java.net.InetSocketAddress;

import java.net.PasswordAuthentication;

import java.net.Proxy;

import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;

 

public class Demo{

    // 代理隧道验证信息

    final static String ProxyUser = "16KASDA";

    final static String ProxyPass = "1231321";

 

    // 代理服务器

    final static String ProxyHost = "t.16yun.cn";

    final static Integer ProxyPort = 31111;

 

    // 设置IP切换头

    final static String ProxyHeadKey = "Proxy-Tunnel";

 

 

    public static String getUrlProxyContent(String url)

    {

        Authenticator.setDefault(new Authenticator() {

            public PasswordAuthentication getPasswordAuthentication()

            {

                return new PasswordAuthentication(ProxyUser, ProxyPass.toCharArray());

            }

        });

        // 设置Proxy-Tunnel

        Random random = new Random();

        int tunnel = random.nextInt(10000);

        String ProxyHeadVal = String.valueOf(tunnel);

 

        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(ProxyHost, ProxyPort));

 

        try

        {

            // 处理异常、其他参数

            Document doc = Jsoup.connect(url).timeout(3000).header(ProxyHeadKey, ProxyHeadVal).proxy(proxy).get();

 

            if(doc != null) {

                System.out.println(doc.body().html());

            }

        }

        catch (IOException e)

        {

            e.printStackTrace();

        }

 

        return null;

    }

 

    public static void main(String[] args) throws Exception

    {

        // 要访问的目标页面

        String targetUrl = "http://httpbin.org/ip";

 

 

        getUrlProxyContent(targetUrl);

    }}

 

]]>
php爬虫程序添加代理ip示例 http://blog.okbase.net/yiniuyun/archive/56289.html yiniuyun 2019-4-25 17:06:00  

?php
        // 要访问的目标页面
        $url = "http://httpbin.org/ip";
        $urls = "https://httpbin.org/ip";

        // 代理服务器
        define("PROXY_SERVER", "tcp://t.16yun.cn:31111");

        // 隧道身份信息
        define("PROXY_USER", "16YUN123");
        define("PROXY_PASS", "123456");

        $proxyAuth = base64_encode(PROXY_USER . ":" . PROXY_PASS);

        // 设置 Proxy tunnel
        $tunnel = rand(1,10000);

        $headers = implode("\r\n", [
            "Proxy-Authorization: Basic {$proxyAuth}",
            "Proxy-Tunnel: ${tunnel}",
        ]);
        $sniServer = parse_url($urls, PHP_URL_HOST);
        $options = [
            "http" => [
                "proxy"  => PROXY_SERVER,
                "header" => $headers,
                "method" => "GET",
                'request_fulluri' => true,
            ],
            'ssl' => array(
                    'SNI_enabled' => true, // Disable SNI for https over http proxies
                    'SNI_server_name' => $sniServer
            )
        ];
        print($url);
        $context = stream_context_create($options);
        $result = file_get_contents($url, false, $context);
        var_dump($result);

        // 访问 HTTPS 页面
        print($urls);
        $context = stream_context_create($options);
        $result = file_get_contents($urls, false, $context);
        var_dump($result);
?>
]]>
爬虫过程中加上这些策略让你采集效率更高 http://blog.okbase.net/yiniuyun/archive/56257.html yiniuyun 2019-4-3 16:19:00  

我们都知道在采集数据过程中,尤其是爬取大量数据的时候,很多网站都有反爬虫措施,封ip是很严重的,,让你在采集的时候很心烦。本文就如何解决这个问题总结出一些应对措施,这些措施可以单独使用,也可以同时使用,效果更好。

、伪造User-Agent

在请求头中把User-Agent设置成浏览器中的User-Agent,来伪造浏览器访问。比如:

headers = {'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}

resp = requests.get(url,headers = headers)

在每次重复爬取之间设置一个随机时间间隔

# 比如:

time.sleep(random.randint(0,3))  # 暂停0~3秒的整数秒,时间区间:[0,3]

# 或:

time.sleep(random.random())  # 暂停0~1秒,时间区间:[0,1)

而且最主要的是ua要越多越好,不要固定的使用那几个,要经常更换最新真实的ua

二、伪造cookies

若从浏览器中可以正常访问一个页面,则可以将浏览器中的cookies复制过来使用,比如:

cookies = dict(uuid='b18f0e70-8705-470d-bc4b-09a8da617e15',UM_distinctid='15d188be71d50-013c49b12ec14a-3f73035d-100200-15d188be71ffd')

resp = requests.get(url,cookies = cookies)

# 把浏览器的cookies字符串转成字典

def cookies2dict(cookies):

    items = cookies.split(';')

    d = {}

    for item in items:

        kv = item.split('=',1)

        k = kv[0]

        v = kv[1]

        d[k] = v

return d

注:用浏览器cookies发起请求后,如果请求频率过于频繁仍会被封IP,这时可以在浏览器上进行相应的手工验证(比如点击验证图片等),然后就可以继续正常使用该cookies发起请求。

三、使用代理

可以换着用多个代理IP来进行访问,防止同一个IP发起过多请求而被封IP,比如:

 # 要访问的目标页面

        targetUrl = "http://httpbin.org/ip"

 

        # 要访问的目标HTTPS页面

        # targetUrl = "https://httpbin.org/ip"

 

        # 代理服务器

        proxyHost = "t.16yun.cn"

        proxyPort = "31111"

 

        # 代理隧道验证信息

        proxyUser = "username"

        proxyPass = "password"

 

        proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {

            "host" : proxyHost,

            "port" : proxyPort,

            "user" : proxyUser,

            "pass" : proxyPass,

        }

 

        # 设置 http和https访问都是用HTTP代理

        proxies = {

            "http"  : proxyMeta,

            "https" : proxyMeta,

        }(这里是用的亿牛云的动态转发代理进行示例)

不管我们采集什么网站的数据,光有代理是不行的,要配合多种反爬策略一起才能更高效的获取大量的数据。

]]>
Selenium程序中亿牛云爬虫代理信息配置 http://blog.okbase.net/yiniuyun/archive/56231.html yiniuyun 2019-3-15 16:22:00  

    from selenium import webdriver

    import string

    import zipfile

 

    # 代理服务器

    proxyHost = "t.16yun.cn"

    proxyPort = "31111"

 

    # 代理隧道验证信息

    proxyUser = "username"

    proxyPass = "password"

 

    def create_proxy_auth_extension(proxy_host, proxy_port,

                                   proxy_username, proxy_password,

                                   scheme='http', plugin_path=None):

        if plugin_path is None:

            plugin_path = r'C:/{}_{}@t.16yun.zip'.format(proxy_username, proxy_password)

 

        manifest_json = """        {            "version": "1.0.0",            "manifest_version": 2,            "name": "16YUN Proxy",            "permissions": [                "proxy",                "tabs",                "unlimitedStorage",                "storage",                "",                "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: [""]},                ['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

 

    proxy_auth_plugin_path = create_proxy_auth_extension(

        proxy_host=proxyHost,

        proxy_port=proxyPort,

        proxy_username=proxyUser,

        proxy_password=proxyPass)

 

    option = webdriver.ChromeOptions()

 

    option.add_argument("--start-maximized")

    option.add_extension(proxy_auth_plugin_path)

 

    driver = webdriver.Chrome(chrome_options=option)

 

    driver.get("http://httpbin.org/ip")

 

]]>
目标网站反爬虫很严要怎么解决? http://blog.okbase.net/yiniuyun/archive/56217.html yiniuyun 2019-3-12 16:44:00  

前言

在网站的采集过程中,每天都要面对网站的各种反爬虫技术,然而我们要想拿到数据,就需要针对性的制定很多方法来突破他们的反爬。例如,在采集数据过程中目标网站能识别出你的UserAgent,那你在采集的时候就需要添加很多的UserAgent来进行伪造,躲避它们的识别。有些网站能通过cookie来进行识别,所以cookie也是需要加上。它限制你的ip请求次数,那么你就需要限制你的ip速度或者换ip。更严的是会用验证码来识别你是人还是机器,那么你就需要模拟人的行为来进行突破。

 就以我现在采集的项目为例,有个项目是需要采集大众点评的数据,相信大家都知道这个网站很难采集的,ip的请求次数限制的很严,但是我又需要很多的数据,如果是通过降低我爬虫的速度那肯定是不行的,这样的话数据不知道要猴年马月才能采集完。所以我只能通过不停的切换动态ip来应对。那我需要在很短的时间内采集大量的数据,不能把时间用在管理ip池,验证他们的可用性上,所以我需要可以在java中可以实现自动切ip,这样我才可以把时间用在数据的采集上。

在网上找了很多的代理,大多都是提供的api模式的,需要我自己管理ip池,我时间紧数据量又大,这个显然不适合。找到了几家提供动态转发模式的,也测试了几家,可能是因为这个网站的特殊性也可能是因为他们的代理不稳定效果都不是很理想。最近找了一家比较新的代理商叫亿牛云,也有提供动态转发模式,据他们客服说他们还是业务独享模式的,这个不知道真假,但是想着既然是业务独享那我采集的这个网站就是我一个人在使用他们的ip池。那感觉应该可以,所以就以他们家的测试为例。但是使用的时候需要先修改下程序,一开始觉得比较麻烦,不怎么愿意测试,但是想着找了那么多家都达不到要求,那就花点时间修改下吧,还好修改的不是很多,而且他们有提供接入文档。

 亿牛云接入文档范例

亿牛云官网有提供java的示例代码

JAVA

HttpClient3.1

import org.apache.commons.httpclient.Credentials;

import org.apache.commons.httpclient.HostConfiguration;

import org.apache.commons.httpclient.HttpClient;

import org.apache.commons.httpclient.HttpMethod;

import org.apache.commons.httpclient.HttpStatus

;import org.apache.commons.httpclient.UsernamePasswordCredentials;

import org.apache.commons.httpclient.auth.AuthScope;

import org.apache.commons.httpclient.methods.GetMethod;

import java.io.IOException;

public class Main {

    private static final String PROXY_HOST = "t.16yun.cn";

    private static final int PROXY_PORT = 31111;

 

    public static void main(String[] args) {

        HttpClient client = new HttpClient();

        HttpMethod method = new GetMethod("https://httpbin.org/ip");

 

        HostConfiguration config = client.getHostConfiguration();

        config.setProxy(PROXY_HOST, PROXY_PORT);

 

        client.getParams().setAuthenticationPreemptive(true);

 

        String username = "16ABCCKJ";

        String password = "712323";

        Credentials credentials = new UsernamePasswordCredentials(username, password);

        AuthScope authScope = new AuthScope(PROXY_HOST, PROXY_PORT);

 

        client.getState().setProxyCredentials(authScope, credentials);

 

        try {

            client.executeMethod(method);

 

            if (method.getStatusCode() == HttpStatus.SC_OK) {

                String response = method.getResponseBodyAsString();

                System.out.println("Response = " + response);

            }

        } catch (IOException e) {

            e.printStackTrace();

        } finally {

            method.releaseConnection();

        }

    }}

这个demo是直接复制使用的,里面的代理的配置部分是购买的代理信息里面提供的,对应的配置进去就可以运行。

 

注意事项

亿牛云的动态转发是按照每秒的请求量进行的,这个需要根据自己的数据量对应的进行购买使用。还有就是他们有提供标准和加强版,好像是ip池大小不一样,这个需要具体的向客服了解。根据自己的实际需求进行使用。

最后

程序这个东西都是一通百通的,亿牛云提供的代码示例是可以直接使用在我们的程序里面运行,那其他提供相同模式的代理平台的提供的示例应该也可以使用,但是建议大家还是自己编写程序进行测试,这样亲自实践的东西才会真正的掌握在自己的手上。

]]>
爬虫程序加了动态代理为什么还是会被封ip http://blog.okbase.net/yiniuyun/archive/56199.html yiniuyun 2019-3-5 16:00:00  

虽然动态代理ip是数据采集过程中必不可少的,但是使用了动态切换ip,并不表示就一定不封ip.因为网站的反爬不仅仅是ip策略,还有cookie、ua甚至js统计分析等,这些都需要针对网站进行一些分析处理,否则只有ip就能将网站都采集下来,那么爬虫程序也就没啥难度了,事实上越是有价值的网站,其信息都是做了反爬策略的,爬虫需要做好更多的优化,双方是矛与盾的关系.所以在采集数据的过程中这些基本的反爬策略也是需要加上的,这样才可以更长期稳定的采集数据,当然使用的代理也是需要选购高质量的,网上搜索的时候会有很多代理可以选择,但是鱼龙混杂,一家一家的测试又很花费时间,这里推介我经常使用的几家代理。亿牛云,个人最看好的代理商,代理效果很好,客服的服务也很好,尤其是他们会给客户提供ua库,还有提供一些应对反爬的策略。讯代理,比较出名的代理商,代理效果也是可以的,可能是他们的客户基数太大了,代理长时间使用会出现下降的情况。站大爷,很霸道的代理商,客服经常都是比较傲娇的

]]>
目标网站反爬虫很严要怎么解决? http://blog.okbase.net/yiniuyun/archive/56187.html yiniuyun 2019-2-27 16:51:00  

前言

在网站的采集过程中,每天都要面对网站的各种反爬虫技术,然而我们要想拿到数据,就需要针对性的制定很多方法来突破他们的反爬。例如,在采集数据过程中目标网站能识别出你的UserAgent,那你在采集的时候就需要添加很多的UserAgent来进行伪造,躲避它们的识别。有些网站能通过cookie来进行识别,所以cookie也是需要加上。它限制你的ip请求次数,那么你就需要限制你的ip速度或者换ip。更严的是会用验证码来识别你是人还是机器,那么你就需要模拟人的行为来进行突破。

 就以我现在采集的项目为例,有个项目是需要采集大众点评的数据,相信大家都知道这个网站很难采集的,ip的请求次数限制的很严,但是我又需要很多的数据,如果是通过降低我爬虫的速度那肯定是不行的,这样的话数据不知道要猴年马月才能采集完。所以我只能通过不停的切换动态ip来应对。那我需要在很短的时间内采集大量的数据,不能把时间用在管理ip池,验证他们的可用性上,所以我需要可以在java中可以实现自动切ip,这样我才可以把时间用在数据的采集上。

在网上找了很多的代理,大多都是提供的api模式的,需要我自己管理ip池,我时间紧数据量又大,这个显然不适合。找到了几家提供动态转发模式的,也测试了几家,可能是因为这个网站的特殊性也可能是因为他们的代理不稳定效果都不是很理想。最近找了一家比较新的代理商叫亿牛云,也有提供动态转发模式,据他们客服说他们还是业务独享模式的,这个不知道真假,但是想着既然是业务独享那我采集的这个网站就是我一个人在使用他们的ip池。那感觉应该可以,所以就以他们家的测试为例。但是使用的时候需要先修改下程序,一开始觉得比较麻烦,不怎么愿意测试,但是想着找了那么多家都达不到要求,那就花点时间修改下吧,还好修改的不是很多,而且他们有提供接入文档。

 亿牛云接入文档范例

亿牛云官网有提供java的示例代码

JAVA

HttpClient3.1

import org.apache.commons.httpclient.Credentials;

import org.apache.commons.httpclient.HostConfiguration;

import org.apache.commons.httpclient.HttpClient;

import org.apache.commons.httpclient.HttpMethod;

import org.apache.commons.httpclient.HttpStatus;

import org.apache.commons.httpclient.UsernamePasswordCredentials;

import org.apache.commons.httpclient.auth.AuthScope;import org.apache.commons.httpclient.methods.GetMethod;

import java.io.IOException;

public class Main {

    private static final String PROXY_HOST = "t.16yun.cn";

    private static final int PROXY_PORT = 31111;

 

    public static void main(String[] args) {

        HttpClient client = new HttpClient();

        HttpMethod method = new GetMethod("https://httpbin.org/ip");

 

        HostConfiguration config = client.getHostConfiguration();

        config.setProxy(PROXY_HOST, PROXY_PORT);

 

        client.getParams().setAuthenticationPreemptive(true);

 

        String username = "16ABCCKJ";

        String password = "712323";

        Credentials credentials = new UsernamePasswordCredentials(username, password);

        AuthScope authScope = new AuthScope(PROXY_HOST, PROXY_PORT);

 

        client.getState().setProxyCredentials(authScope, credentials);

 

        try {

            client.executeMethod(method);

 

            if (method.getStatusCode() == HttpStatus.SC_OK) {

                String response = method.getResponseBodyAsString();

                System.out.println("Response = " + response);

            }

        } catch (IOException e) {

            e.printStackTrace();

        } finally {

            method.releaseConnection();

        }

    }}

这个demo是直接复制使用的,里面的代理的配置部分是购买的代理信息里面提供的,对应的配置进去就可以运行。

 

注意事项

亿牛云的动态转发是按照每秒的请求量进行的,这个需要根据自己的数据量对应的进行购买使用。还有就是他们有提供标准和加强版,好像是ip池大小不一样,这个需要具体的向客服了解。根据自己的实际需求进行使用。

最后

程序这个东西都是一通百通的,亿牛云提供的代码示例是可以直接使用在我们的程序里面运行,那其他提供相同模式的代理平台的提供的示例应该也可以使用,但是建议大家还是自己编写程序进行测试,这样亲自实践的东西才会真正的掌握在自己的手上。

]]>
目标网站反爬虫很严要怎么解决? http://blog.okbase.net/yiniuyun/archive/56186.html yiniuyun 2019-2-27 16:47:00  

前言

在网站的采集过程中,每天都要面对网站的各种反爬虫技术,然而我们要想拿到数据,就需要针对性的制定很多方法来突破他们的反爬。例如,在采集数据过程中目标网站能识别出你的UserAgent,那你在采集的时候就需要添加很多的UserAgent来进行伪造,躲避它们的识别。有些网站能通过cookie来进行识别,所以cookie也是需要加上。它限制你的ip请求次数,那么你就需要限制你的ip速度或者换ip。更严的是会用验证码来识别你是人还是机器,那么你就需要模拟人的行为来进行突破。

 就以我现在采集的项目为例,有个项目是需要采集大众点评的数据,相信大家都知道这个网站很难采集的,ip的请求次数限制的很严,但是我又需要很多的数据,如果是通过降低我爬虫的速度那肯定是不行的,这样的话数据不知道要猴年马月才能采集完。所以我只能通过不停的切换动态ip来应对。那我需要在很短的时间内采集大量的数据,不能把时间用在管理ip池,验证他们的可用性上,所以我需要可以在java中可以实现自动切ip,这样我才可以把时间用在数据的采集上。

在网上找了很多的代理,大多都是提供的api模式的,需要我自己管理ip池,我时间紧数据量又大,这个显然不适合。找到了几家提供动态转发模式的,也测试了几家,可能是因为这个网站的特殊性也可能是因为他们的代理不稳定效果都不是很理想。最近找了一家比较新的代理商叫亿牛云,也有提供动态转发模式,据他们客服说他们还是业务独享模式的,这个不知道真假,但是想着既然是业务独享那我采集的这个网站就是我一个人在使用他们的ip池。那感觉应该可以,所以就以他们家的测试为例。但是使用的时候需要先修改下程序,一开始觉得比较麻烦,不怎么愿意测试,但是想着找了那么多家都达不到要求,那就花点时间修改下吧,还好修改的不是很多,而且他们有提供接入文档。

 亿牛云接入文档范例

亿牛云官网有提供java的示例代码

JAVA

HttpClient3.1

import org.apache.commons.httpclient.Credentials;import org.apache.commons.httpclient.HostConfiguration;

import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpMethod;

import org.apache.commons.httpclient.HttpStatus;

import org.apache.commons.httpclient.UsernamePasswordCredentials;

import org.apache.commons.httpclient.auth.AuthScope;import org.apache.commons.httpclient.methods.GetMethod;

import java.io.IOException;

public class Main {

    private static final String PROXY_HOST = "t.16yun.cn";

    private static final int PROXY_PORT = 31111;

 

    public static void main(String[] args) {

        HttpClient client = new HttpClient();

        HttpMethod method = new GetMethod("https://httpbin.org/ip");

 

        HostConfiguration config = client.getHostConfiguration();

        config.setProxy(PROXY_HOST, PROXY_PORT);

 

        client.getParams().setAuthenticationPreemptive(true);

 

        String username = "16ABCCKJ";

        String password = "712323";

        Credentials credentials = new UsernamePasswordCredentials(username, password);

        AuthScope authScope = new AuthScope(PROXY_HOST, PROXY_PORT);

 

        client.getState().setProxyCredentials(authScope, credentials);

 

        try {

            client.executeMethod(method);

 

            if (method.getStatusCode() == HttpStatus.SC_OK) {

                String response = method.getResponseBodyAsString();

                System.out.println("Response = " + response);

            }

        } catch (IOException e) {

            e.printStackTrace();

        } finally {

            method.releaseConnection();

        }

    }}

这个demo是直接复制使用的,里面的代理的配置部分是购买的代理信息里面提供的,对应的配置进去就可以运行。

 

注意事项

亿牛云的动态转发是按照每秒的请求量进行的,这个需要根据自己的数据量对应的进行购买使用。还有就是他们有提供标准和加强版,好像是ip池大小不一样,这个需要具体的向客服了解。根据自己的实际需求进行使用。

最后

程序这个东西都是一通百通的,亿牛云提供的代码示例是可以直接使用在我们的程序里面运行,那其他提供相同模式的代理平台的提供的示例应该也可以使用,但是建议大家还是自己编写程序进行测试,这样亲自实践的东西才会真正的掌握在自己的手上。

]]>
实践出真知-C Sharp中集成ip代理(以亿牛云爬虫代理为例) http://blog.okbase.net/yiniuyun/archive/56164.html yiniuyun 2019-2-21 17:04:00  

 

一、前言

公司最近新增了一个项目需要爬取航空信息数据,对方有ip屏蔽。所以我需要在C Sharp中实现ip自动切换,才能够完成爬取任务。

 

在此之前,我找过网上很多家代理测试。都是通过api接口进行ip的调用,可能是之前代码没有调整好,导致测试没有成功。(后面有机会再测试)。这两天了解了一家新的代理商叫亿牛云,他们有提供一种新的代理使用模式,动态转发,所以这边就以他们家的代理为例测试看下。

二 亿牛云范例

亿牛云官网有直接给出对应的语言的代码示例我选择的是C Sharp

 

C Sharp代码示例

   // 要访问的目标页面

    string targetUrl = "http://httpbin.org/ip";

 

 

    // 代理服务器

    string proxyHost = "http://t.16yun.cn";

    string proxyPort = "6447";

 

    // 代理隧道验证信息

    string proxyUser = "16IXNGXO";

    string proxyPass = "366338";

 

    // 设置代理服务器

    WebProxy proxy = new WebProxy(string.Format("{0}:{1}", proxyHost, proxyPort), true);

 

 

    ServicePointManager.Expect100Continue = false;

 

    var request = WebRequest.Create(targetUrl) as HttpWebRequest;

 

    request.AllowAutoRedirect = true;

    request.KeepAlive = true;

    request.Method    = "GET";

    request.Proxy     = proxy;

 

    //request.Proxy.Credentials = CredentialCache.DefaultCredentials;

 

    request.Proxy.Credentials = new System.Net.NetworkCredential(proxyUser, proxyPass);

 

    // 设置Proxy Tunnel

    // Random ran=new Random();

    // int tunnel =ran.Next(1,10000);

    // request.Headers.Add("Proxy-Tunnel", String.valueOf(tunnel));

 

 

    //request.Timeout = 20000;

    //request.ServicePoint.ConnectionLimit = 512;

    //request.UserAgent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36";

    //request.Headers.Add("Cache-Control", "max-age=0");

    //request.Headers.Add("DNT", "1");

 

 

    //String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(proxyUser + ":" + proxyPass));

    //request.Headers.Add("Proxy-Authorization", "Basic " + encoded);

 

    using (var response = request.GetResponse() as HttpWebResponse)

    using (var sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8))

    {

        string htmlStr = sr.ReadToEnd();

}

这是代码的示例,这个demo是可以直接复制使用的,所以我就直接复制了,其中代理的配置是需要联系客服开通代理才可以获取的信息。

 

三 注意事项

亿牛云的爬虫代理最低支持ip1秒钟请求5请求,(如果需要更大的请求量,可以选项对应的产品)。所以,当他是默认是5请求的时候,我需要对爬虫进行限速。

]]>