2016-04-30 11 views
0

こんにちは私はc#webclientのテキストボックスからプロキシを呼び出すことについて質問があります。 今、私はテキストボックスからランダムに次のプロキシを取得することができますが、ランダムではなくリクエストを行うたびに2番目のプロキシを呼びたいと思います。私はテキストボックスから次のプロキシを呼び出すのは、randomを使用するのではなく、

私が今使っているコードは次のとおりです。

readonly List<string> proxies = new List<string>(); 

WebProxy RandomProxy 
    { 
     get 
     { 
      return proxies.Count == 0 ? 
       null : 
       new WebProxy(proxies[rnd.Next(proxies.Count)]); 

     } 
    } 

proxies.Clear(); 
proxies.AddRange(txtProxy.Lines.Where(p => !String.IsNullOrWhiteSpace(p))); 

var proxy = RandomProxy; 
var wc = new WebClient { Proxy = proxy }; 

要求を分析した後、私はプロキシが変化していることに気付きましたが、私はと呼ばれるプロキシを持っていると思いませんか。したがって、すべてのリクエストは、テキストボックスから次のプロキシを使用します。

これを変更する方法を私に説明できる人は誰ですか? ありがとうございます。 よろしくお願いします。 デニス

+0

だから、ランダムプロキシを呼び出すたびに、既に呼び出されているものを除外しますか? – MaKCbIMKo

+0

はい、私は@MaKCbIMKoに到達しようとしています。今すぐリストからランダムプロキシを呼び出しています。 – user1796805

答えて

1

あなたは何ですか?

// queue to get proxies in order started with random index 
private Queue<string> sortedProxies; 

WebProxy NextProxy 
{ 
    get 
    { 
     if (sortedProxies == null) 
     { 
      var proxyCount = proxies.Count; 
      var randomIndex = rnd.Next(proxyCount); 
      // get proxies from random index to the end of the list 
      var sortedProxyList = proxies.GetRange(randomIndex, proxyCount -randomIndex); 
      // add proxies from start to the random index ('loop' for all proxies 
      sortedProxyList.AddRange(proxies.GetRange(0, randomIndex)); 


      sortedProxies = new Queue<string>(sortedProxyList); 
     } 

     // dequeue the next proxy 
     var proxy = sortedProxies.Dequeue(); 
     // enqueue proxy again for infinity loop 
     sortedProxies.Enqueue(proxy); 

     return new WebProxy(proxy); 
    } 
} 
+0

こんにちは、おかげでスクリプトが、私はそれを分析し、私はループでそれを実行しています。 10のプロキシから、Webクライアントの実行後に1つのプロキシを使用して終了します。私はあなたのプロキシを削除しようとしました。ただ、プロキシがテキストボックスの次の行から新しいプロキシが呼び出されるかどうかを確認するだけですが、その呼び出しもランダムプロキシです。次のプロキシを呼び出すことは可能ですか?ランダムの代わりに。長い質問のために申し訳なく思っています。私はあなたにこれを気にしません。私は本当にあなたの助けに感謝します。 – user1796805

+0

だから、最初のものをランダムに選択するだけで、このインデックスから昇順に移動する必要がありますか? – MaKCbIMKo

+0

可能であれば、最初の要求を選択した後、次の要求を取得するたびに、次の要求を取得します。 – user1796805

関連する問題