Подделка запроса браузера в ASP.net C # - PullRequest
7 голосов
/ 13 марта 2009

Я использую приведенный ниже код для добавления одной из наших сторонних разработанных страниц, чтобы я мог проанализировать ее как XML для моих случайных фрагментов работы.

Раздражает, что на сервере по-прежнему установлен уровень обнаружения браузера, который позволяет только определенным браузерам заходить на сайт; поэтому вопрос в том, как бы я притворялся, чтобы сервер считал запрос браузера?

   static string GetHtmlPage(string strURL)
    {

        String strResult;
        System.Net.WebResponse objResponse;

        System.Net.WebRequest objRequest = System.Net.HttpWebRequest.Create(strURL);

        objResponse = objRequest.GetResponse();
        using (System.IO.StreamReader sr = new System.IO.StreamReader(objResponse.GetResponseStream()))
        {
            strResult = sr.ReadToEnd();
            sr.Close();
        }
        return strResult;
    }

Ответы [ 4 ]

15 голосов
/ 13 марта 2009

Обнаружение браузера выполняется на основе заголовка в запросе к серверу. Все, что вам нужно сделать, это установить этот заголовок. Однако с HttpWebRequest вы устанавливаете это не через коллекцию заголовков, а с помощью свойства .UserAgent.

...
System.Net.WebRequest objRequest = 
   System.Net.HttpWebRequest.Create(strURL);

//Pretend to be IE7
((System.Net.HttpWebRequest)objRequest).UserAgent = 
   "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)";

objResponse = objRequest.GetResponse();
...
3 голосов
/ 02 июня 2013

Вы можете использовать атрибут ClientTarget на странице. Э.Г.

http://msdn.microsoft.com/en-us/library/system.web.ui.page.clienttarget.aspx

http://msdn.microsoft.com/en-sg/library/6379d90d(v=vs.85).aspx

Установите конфигурацию по вашему желанию ...

например.

<configuration>
   <system.web>
      <clientTarget>
         <add alias="ie5" userAgent="Mozilla/4.0 (compatible;MSIE 5.5;Windows NT 4.0)"/>
         <add alias="ie4" userAgent="Mozilla/4.0 (compatible;MSIE 4.0;Windows NT 4.0)"/>
         <add alias="uplevel" userAgent="Mozilla/4.0 (compatible;MSIE 4.0;Windows NT 4.0)"/>
         <add alias="downlevel" userAgent="Unknown"/>
      </clientTarget>
   </system.web>
</configuration>

Тогда вы можете использовать его следующим образом.

<asp:Page ClientTarget="downlevel" />

Это подделает запрос!

1 голос
/ 13 марта 2009

Я думаю, что большинство (если не все) обнаружение браузера основано на заголовке User-Agent, установленном свойством HttpRequest.UserAgent. Я вижу, что есть сайт для строк user-agent различных браузеров: http://www.user -agents.org /

0 голосов
/ 13 марта 2009

как с Уолденом выше, но должен был заменить

objRequest.UserAgent = 
   "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)";

с

((System.Net.HttpWebRequest)objRequest).UserAgent = "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)";

В противном случае он упал. (Я изменил браузер на googlebot, чтобы избежать нашего сервера cookie)

...