http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 4333|回复: 5

[HttpHelper] 请问该如何绑定ip请求?

[复制链接]
发表于 2015-7-8 13:25:28 | 显示全部楼层 |阅读模式
1金钱
server提供了5个ip
我想要平均使用这5个ip来发送请求
有搜寻到HttpWebRequest有提供这样的方法
[C#] 纯文本查看 复制代码
            var request = (HttpWebRequest)WebRequest.Create("http://www.google.com");
            request.ServicePoint.BindIPEndPointDelegate = (servicePoint, remoteEndPoint, retryCount) =>
            {
                try
                {
                    if (retryCount < 1)
                        return new IPEndPoint(IPAddress.Parse(IP), 0);
                    else
                        return null;
                }
                catch
                {
                    return null;
                }
            };


请问HttpHelper要怎么设定?谢谢



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2015-7-8 13:33:35 | 显示全部楼层
你这是你本地有五个IP还是说的服务器 有5个IP,你要变换着访问
回复

使用道具 举报

发表于 2015-7-8 13:41:42 | 显示全部楼层
如果是本地的,这个在Httphelper里并没有,这个需求我记录一下,这次更新把这个加上。

可以参考这个先用
[C#] 纯文本查看 复制代码
/// <summary>
        /// 通过设置这个属性,可以在发出连接的时候绑定客户端发出连接所使用的IP地址。 
        /// </summary>
        /// <param name="servicePoint"></param>
        /// <param name="remoteEndPoint"></param>
        /// <param name="retryCount"></param>
        /// <returns></returns>
        public static IPEndPoint BindIPEndPointCallback(ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount)
        {
            return new IPEndPoint(IPAddress.Parse("192.168.1.1") , 0);//端口号
        }
        /// <summary>
        /// 一个服务器上面配置多个IP 固定出网IP
        /// </summary>
        public static void MakeRequest() 
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.baidu.com");
            //设置本地的出口ip和端口
            request.ServicePoint.BindIPEndPointDelegate = new BindIPEndPoint(BindIPEndPointCallback);
            if (ServicePointManager.DefaultConnectionLimit < 10)
            {
                ServicePointManager.DefaultConnectionLimit = 10;
            }
            //req.ServicePoint.ConnectionLimit=int.Max;  //允许最大连接数 

            HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
            response.ToString(); 
        }
回复

使用道具 举报

 楼主| 发表于 2015-7-8 13:43:51 | 显示全部楼层
是本地的(在server上运作)谢谢站长大大
回复

使用道具 举报

发表于 2015-7-9 09:16:36 | 显示全部楼层
HttpHelper越来越强大了。
回复

使用道具 举报

 楼主| 发表于 2015-7-9 15:17:26 | 显示全部楼层
本帖最后由 uilmas 于 2015-7-9 15:22 编辑

报告飞哥
要绑定不同ip前
要设定request.KeepAlive = false
否则会发生第一次绑定成功后
就不再触发BindIPEndPointDelegate了(也就是后面都不会再发生绑定ip的事件了,绑不到其他的ip)

送上代码:
[C#] 纯文本查看 复制代码
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.baidu.com");
request.KeepAlive = false;
request.ServicePoint.BindIPEndPointDelegate = new BindIPEndPoint(BindIPEndPointCallback);




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-4-28 22:23

© 2014-2021

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