请选择 进入手机版 | 继续访问电脑版
开启辅助访问 设为首页收藏本站

从零开始学编程-编程学习教程分享,编程技术交流论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 152|回复: 0

[蓝鸟编程] 实践出真知-C Sharp中集成ip代理(以亿牛云爬虫代理为例)

[复制链接]

29

主题

36

帖子

128

积分

Kib

Rank: 3Rank: 3

积分
128
QQ
发表于 2019-10-24 17:48:19 | 显示全部楼层 |阅读模式

一、前言
公司最近新增了一个项目需要爬取航空信息数据,对方有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请求的时候,我需要对爬虫进行限速。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

展开

QQ|Archiver|手机版|小黑屋|从零开始学编程 ( 豫ICP备15032706号-2 )

GMT+8, 2019-11-22 02:35 , Processed in 0.089788 second(s), 32 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表