Technorati 标记: http 代理验证及测试
Technorati 标记: C#

参考了网上很多资料,综合整理出来最终的代码:

 
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Diagnostics.Contracts;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
using static System.GC;
using static System.Net.WebRequest;

namespace 代理测试
{
    class Program
    {
        int printCount;
        Uri uri;
        Encoding bin;
        string[] IpSectionSpan = { "10.197.255.", "10.197.198." };
        NetworkCredential credit;

        [STAThread]
        static void Main(string[] args)
        {
            new Program();
            ReadKey();
        }

        public Program()
        {
            var dr = new AppSettingsReader();

            credit = new NetworkCredential(
                dr.GetValue("uid", typeof(string)).ToString(),
                dr.GetValue("pwd", typeof(string)).ToString());

            //var creadentiCache = new CredentialCache();
            uri = new Uri("http://wwww.baidu.com/");

            bin = Encoding.GetEncoding("UTF-8");

            //测试 IpSectionSpan 中所有IP段中所有IP
            TestIPSetions();
        }

        private void TestIPSetions()
        {
            //for (int i = 1; i < 255; i++)
            //{
                TestInSpan(198.ToString());
            //}
        }

        private void TestInSpan(string ipSect)
        {
            for (var i = 255; i > 0; i--)
            {
                var wproxy = new WebProxy(@"10.137." + ipSect + "." + i, 3128);
                //uri = new Uri("http://10.137.255." + i+":3128/");
                //creadentiCache.Add(uri, "Basic", credit);
                //wproxy.Credentials = creadentiCache;
                wproxy.Credentials = credit;

                //Collect();
                var req = Create(uri) as HttpWebRequest;
                req.PreAuthenticate = true;
                req.Timeout = 1000; //超时
                req.Proxy = wproxy;
                req.KeepAlive = false;

                try
                {
                    WebResponse resp;

                    req.BeginGetResponse(ra =>
                    {
                        try
                        {
                            using (resp = req.EndGetResponse(ra))
                            {
                                if (resp != null)
                                {
                                    var sr = new StreamReader(resp.GetResponseStream(), bin);
                                    var str = sr.ReadToEnd();
                                    if (!str.Contains("百度")) return;
                                    WriteLine("{0}\t:{1} \t 验证成功!", printCount++, wproxy.Address);
                                    sr.Close();
                                    sr.Dispose();
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            WriteLine("{0}\t:{1} \t 验证失败,失败原因:\t {2}", printCount++, wproxy.Address, ex.Message);
                        }

                    }, null);
                }
                catch (Exception e)
                {
                    WriteLine(e.Message);
                }
            }
        }
    }
} 

http 代理 测试的更多相关文章

  1. 利用Charles做代理测试电脑上写的H5页面

    做H5页面的同学可能经常会遇到一个场景,就是电脑上调试好的页面怎么在手机上访问测试呢? 下面就介绍一种自己经常使用的方式,利用Charles代理软件来实现! 安装Charles 直接去官网下载对应的系 ...

  2. Java 通过代理测试webService接口

    以下代码针是针对电脑是通过代理上网的情况时使用: System.getProperties().put("http.proxyHost", "111.111.11.1&q ...

  3. nginx 安装与反向代理测试 under MAC

    安装 在 Mac 下可以直接使用 homebrew 安装 nginx brew search nginx brew install nginx 启动 nginx: sudo nginx,访问 8080 ...

  4. iphone设置fiddler代理测试

    iPhone上配置fiddler为代理方法: 打开IPhone, 找到你的网络连接,打开HTTP代理,输入Fiddler所在机器的IP地址(比如:192.168.1.104) 以及Fiddler的端口 ...

  5. docker使用代理(测试docker 17.06)

    环境:debian9 service docker stop sudo HTTP_PROXY=http://127.0.0.1:1080 dockerd sudo docker pull gcr.io ...

  6. Python爬虫-代理池-爬取代理入库并测试代理可用性

    目的:建立自己的代理池.可以添加新的代理网站爬虫,可以测试代理对某一网址的适用性,可以提供获取代理的 API. 整个流程:爬取代理 ----> 将代理存入数据库并设置分数 ----> 从数 ...

  7. [原]HAproxy 代理技术原理探究

    HAproxy 技术分享 简介 HAProxy是一款提供高可用性.负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件 Features 1.免费 2.能够做到4层以上代理 3.高性能 ...

  8. JDK动态代理实现原理

    之前虽然会用JDK的动态代理,但是有些问题却一直没有搞明白.比如说:InvocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的.直到看了他的文章才彻底明白,附网址:htt ...

  9. Spring中的JDK动态代理

    Spring中的JDK动态代理 在JDK1.3以后提供了动态代理的技术,允许开发者在运行期创建接口的代理实例.在Sun刚推出动态代理时,还很难想象它有多大的实际用途,现在动态代理是实现AOP的绝好底层 ...

随机推荐

  1. 解密电子书之一:电子墨水(eink)

    今日,关于电子书的话题不断,先是盛大抖了个攒,测试/定价/赔钱的营销策略引来多方质疑.而后汉王又抛出个8寸/800MHz/ARM A8的指标产品大打性能牌. 身为电子行业网站,与非网在时尚数码热潮面前 ...

  2. C语言入门(3)——对Hello World程序的解释

    上篇我们写了一个最简单的程序.这个简单的程序包含了很多重要的内容.本篇我们通过这个最简单的Hello World程序逐一讲解C语言程序的一些特点. 打开Visual Studio 2013 通过菜单- ...

  3. MFC DLL资源动态切换

    在MFC使用过程中,遇到DLL资源与主EXE资源冲突问题. 出现这样的Bug,一时无从下手. 报错位置在核心代码中dlgcore.cpp. [cpp] view plaincopy BOOL AFXA ...

  4. [Leetcode][Python]33: Search in Rotated Sorted Array

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 33: Search in Rotated Sorted Arrayhttps ...

  5. 用sqlserver处理excel表格

    本来最近在研究微信公众平台的,老大临时交我个任务,把excel表格里的数据导入sql数据库,我想这so easy嘛. 没想都在上面消磨了两天... 把情况介绍下:在数据库中有如下这样结构的表(A表) ...

  6. Eclipse debug ‘Source not found’

    用Eclispe进行Debug时一直被一个问题所困扰:Source not found. 问题产生的原因是调试进入了一个没有源代码的jar包里. 简短说明: Edit Source Lookup Pa ...

  7. GDI+ 填充背景时,非常多时候不起作用,GDI、GDI+配合运用

    在ONDRAW中运行GDI+ 填充背景时,不起作用,不知道什么原因 [cpp] view plaincopy Graphics graphics(pDC->GetSafeHdc()); Bitm ...

  8. 整合Spring.net到asp.net网站开发中初探

    整合Spring.net到asp.net网站开发中初探 http://www.veryhuo.com 2009-10-21 烈火网 投递稿件 我有话说   Spring提供了一个轻量级的用于构建企业级 ...

  9. 在查询用户的权限的时候 使用左外连接 和 access数据库中左外连接

    一般做视图最好是做成左外连接的.而其作用尤其在我们查询用户当前的权限时尤为明显,我们将 权限表即模块表放→角色权限表→角色表→用户角色表→用户表 就这样left outer join 连接起来,这样就 ...

  10. wcf综合运用之:大文件异步断点续传

    在WCF下作大文件的上传,首先想到使用的就是Stream,这也是微软推荐的使用方式.处理流程是:首先把文件加载到内存中,加载完毕后传递数据.这种处理方式对小文件,值得推荐,比如几K,几十k的图片文件, ...