/// <summary>
        /// 单线程业务逻辑
        /// </summary>
        private void oneThreadChengTongService()
        {
            //TODO 如果不能动态更改userAgent,那就多启动几个客户端程序,谁抢到了下载线程谁就执行,或者开通城通的多线程下载


            //获取要伪装的上级页面地址
            sourceFromData = SourceFromConfig.randomSourceFromData();
            //随机的userAgent信息
            userAgent = UserAgent.randomUserAgent();
            if (!Cef.IsInitialized)
            {
                CefSettings settings = new CefSettings()
                {
                    CachePath = Directory.GetCurrentDirectory() + @"\Cache",
                };
                settings.UserAgent             = userAgent;
                settings.PersistSessionCookies = true;                                              //支持cookie
                settings.CefCommandLineArgs.Add("ppapi-flash-path", @"Plugins\pepflashplayer.dll"); //cef 支持flash http://blog.csdn.net/xxhongdev/article/details/77195339
                settings.AcceptLanguageList = "zh-CN,zh;q=0.8";

                //settings.CefCommandLineArgs.Add("proxy-server", ipAndPort);
                //settings.CefCommandLineArgs.Add("no-proxy-server", "1")
                //settings.UserAgent = "Hello!";

                Cef.Initialize(settings);
            }

            //browser = new ChromiumWebBrowser("https://www.baidu.com/s?wd=%E6%88%91%E7%9A%84ip&rsv_spt=1&rsv_iqid=0x914838db0001e715&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=94789287_hao_pg&rsv_enter=1&rsv_sug3=5&rsv_sug1=3&rsv_sug7=100&rsv_t=2fec3e53%2FvqkD9VS1c4ogr84NRknqB%2FGqrZrxz5Cxm5EsGDivYD6hdnRTYE7%2BQZBJN4p7tl%2B");
            String testIp = "https://www.baidu.com/s?wd=%E6%88%91%E7%9A%84ip&rsv_spt=1&rsv_iqid=0x914838db0001e715&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=94789287_hao_pg&rsv_enter=1&rsv_sug3=5&rsv_sug1=3&rsv_sug7=100&rsv_t=2fec3e53%2FvqkD9VS1c4ogr84NRknqB%2FGqrZrxz5Cxm5EsGDivYD6hdnRTYE7%2BQZBJN4p7tl%2B";

            browser = new ChromiumWebBrowser(sourceFromData.FromSource)
            {
                //browser = new ChromiumWebBrowser(testIp){
                BrowserSettings = new BrowserSettings()
                {
                    Plugins = CefState.Enabled
                },
                Dock = DockStyle.Fill
            };

            browser.FrameLoadEnd   += browser_FrameLoadEnd;                 //网页加载完成
            browser.DownloadHandler = new MyDownLoadFile();                 //下载器配置
            browser.LifeSpanHandler = new MyLifeSpanHandler();              //在同一窗口打开链接
            browser.RequestHandler  = new MyRequestHandler(sourceFromData); //动态更改 header
            //TODO: 在官方demo里CefSharp.Example中->Handlers->RequestHandler中93行说明了如何让每次请求都更改user-agent,可以参考
            //browser.RequestHandler = new MyRequestHandler();//每次请求都更换User-Agent 注意IRequestHandler在CefSharp.IRequestHandler



            browser.Dock = DockStyle.Fill;

            //js调用c#
            //browser表示你的CefSharp对象使用它的RegisterJsObject来绑定你的.net类
            browser.RegisterJsObject("sourceFromData", sourceFromData);


            //Console.WriteLine("browser是否初始化:" + browser);
            //由于在下载之头启用了代理ip,此处要禁止代理ip
            Cef.UIThreadTaskFactory.StartNew(delegate {
                //Console.WriteLine("获取的ip:" + ipAndPort);
                //Console.WriteLine("browser2是否初始化:" + browser);
                var rc    = Cef.GetGlobalRequestContext();
                var v     = new Dictionary <string, object>();
                v["mode"] = "fixed_servers";
                //v["server"] = WuyouProxy.getProxyIpAndPort();
                v["User-Agent"] = userAgent;
                string error;
                bool success = rc.SetPreference("proxy", v, out error);
                if (success)
                {
                }
            });

            this.panel1.Controls.Clear();
            this.panel1.Controls.Add(browser);
        }
示例#2
0
 public MyRequestHandler(SourceFromData sourceFromData)
 {
     this.sourceFromData = sourceFromData;
 }