2016-06-16 4 views
1

У меня есть приложение C#, которое загружает несколько крошечных файлов с веб-сайтов (торренты). Некоторые сайты ограничивают количество загрузок на каждый IP-адрес в день.HttpWebRequest таймаут (будучи заблокированным) C#

Я делаю HttpWebRequest, и если поток является действительным торрентом, я сохраняю его на диске.

Есть ли способ для моего приложения C# для подмены моего IP-адреса при выполнении HttpWebRequest, так что загрузка не подведет?

Я отложил время загрузки до одного раза в 10 минут, но не повезло. В конце концов, я все равно заблокирован.

Я слышал, что «TOR» может использовать разные IP-адреса, но я не хочу, чтобы люди, использующие мое настольное приложение, должны были устанавливать браузер TOR отдельно.

  HttpWebResponse resp = null; 

     try 
     { 
      var req = (HttpWebRequest)WebRequest.Create("http://www.exampe.com/test.torrent); 
      req.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate"); 
      req.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; 
      req.Timeout = 30000; 
      req.KeepAlive = true; 
      resp = (HttpWebResponse)(req.GetResponse()); 

     } 

Любые решения?

ответ

1

Для этого вам необходимо управлять пакетами tcp/ip. Это означает, что вам нужно захватить исходящий пакет, созданный HttpWebRequest, и изменить его исходный IP на поддельный.

Я нашел этот форум пост, который, казалось бы, должен делать с тем, что вы хотите сделать, проверить это: http://pcapdotnet.codeplex.com/discussions/349978

Насколько я знаю, вы можете сделать это через PCap.net или SharpPcap библиотек.

+0

Не сделал бы так, чтобы пакеты ответа не возвращались к вам? Кроме того, вам придется изменить свой общедоступный IP-адрес, который не может быть ip-адресом вашей системы. –

+1

Правильно, и Spoofed IP должен быть в вашей подсети, чтобы перенаправляться обратно в вашу сеть. И если вы за NAT-сервером, я думаю, что это будет невозможно. Вы можете обманывать, но по мере того, как NAT снова изменяет пакеты, это будет бессмысленно. – akazemis