Тайм-аут HttpWebRequest (блокируется) C#
У меня есть приложение aC#, которое загружает несколько крошечных файлов с веб-сайтов (торренты). Некоторые сайты ограничивают количество загрузок на IP в день.
Я делаю 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.