Как расширить URL-адреса в C #? - PullRequest
3 голосов
/ 03 апреля 2010

Если у меня есть URL-адрес типа http://popurls.com/go/msn.com/l4eba1e6a0ffbd9fc915948434423a7d5,, как программно развернуть его до исходного URL-адреса? Очевидно, что я мог бы использовать API, например expandurl.com , но это ограничит меня до 100 запросов в час.

Ответы [ 2 ]

7 голосов
/ 03 апреля 2010

Сделайте запрос на URL и проверьте возвращенный код состояния. Если 301 или 302, найдите заголовок Location, который будет содержать «расширенный URL»:

string url = "http://popurls.com/go/msn.com/l4eba1e6a0ffbd9fc915948434423a7d5";

var request = (HttpWebRequest) WebRequest.Create(url);            
request.AllowAutoRedirect = false;

var response = (HttpWebResponse) webRequest.GetResponse();

if ((int) response.StatusCode == 301 || (int) response.StatusCode == 302)
{
    url = response.Headers["Location"];
}

Примечание. Это решение предполагает, что происходит только одно перенаправление. Это может или не может быть вам нужно. Если вы просто хотите деобфусцировать URL-адреса с обфускаторов (bit.ly и др.), Это решение должно работать хорошо.

1 голос
/ 03 апреля 2010

Удалось найти ответ.

    HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://popurls.com/go/msn.com/l4eba1e6a0ffbd9fc915948434423a7d5");
    req.AllowAutoRedirect = true;
    HttpWebResponse res = (HttpWebResponse)req.GetResponse();
    ServicePoint sp = req.ServicePoint;
    Console.WriteLine("End address is " + sp.Address.ToString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...