Используя web.config для запрета агентов пользователя

Я думаю, что основное различие - то, что платформы следуют" , голливудский принцип ", т.е. "не звонят нам, мы позвоним Вам".

Согласно Martin Fowler :

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

А платформа воплощает некоторый абстрактный дизайн с большим встроенным поведением. Для использования его, необходимо вставить поведение в различные места в платформе или путем разделения на подклассы или путем включения собственных классов. Код платформы тогда называет Ваш код в этих точках.

8
задан Eamon Nerbonne 23 July 2009 в 16:27
поделиться

3 ответа

Это можно легко сделать с помощью модуля URLRewrite в IIS7. Но я действительно не знаю, предотвратит ли это регистрацию этих запросов.

 <rewrite> 
  <rules> 
    <rule name="Ban user-agent RogueBot" stopProcessing="true"> 
      <match url=".*" /> 
      <conditions> 
        <add input="{HTTP_USER_AGENT}" pattern="RogueBotName" /> 
        <add input="{MyPrivatePages:{REQUEST_URI}}" pattern="(.+)" /> 
      </conditions> 
      <action type="AbortRequest" /> 
    </rule> 
  </rules> 
  <rewriteMaps> 
    <rewriteMap name="MyPrivatePages"> 
      <add key="/PrivatePage1.aspx" value="block" /> 
      <add key="/PrivatePage2.aspx" value="block" />
      <add key="/PrivatePage3.aspx" value="block" /> 
    </rewriteMap> 
  </rewriteMaps> 
</rewrite>
12
ответ дан 5 December 2019 в 12:11
поделиться

Не думайте, что это можно сделать из web.config (авторизация в web.config предназначена для пользователей, а не для ботов). Лучше всего будет какой-то настраиваемый фильтр ISAPI для самого IIS. Об этом есть блог . Удачи!

-1
ответ дан 5 December 2019 в 12:11
поделиться

Вы можете написать собственный HttpModule ASP.Net, как я сделал для своего сайта, чтобы заблокировать некоторых ботов-мошенников . Вот код:

public class UserAgentBasedRedirecter : IHttpModule
{
    private static readonly Regex _bannedUserAgentsRegex = null;
    private static readonly string _bannedAgentsRedirectUrl = null;

    static UserAgentBasedRedirecter()
    {
            _bannedAgentsRedirectUrl = ConfigurationManager.AppSettings["UserAgentBasedRedirecter.RedirectUrl"];
            if (String.IsNullOrEmpty(_bannedAgentsRedirectUrl))
                _bannedAgentsRedirectUrl = "~/Does/Not/Exist.html";

            string regex = ConfigurationManager.AppSettings["UserAgentBasedRedirecter.UserAgentsRegex"];
            if (!String.IsNullOrEmpty(regex))
                _bannedUserAgentsRegex = new Regex(regex, RegexOptions.IgnoreCase | RegexOptions.Compiled);
    }

    #region Implementation of IHttpModule

    public void Init(HttpApplication context)
    {
            context.PreRequestHandlerExecute += RedirectMatchedUserAgents;
    }

    private static void RedirectMatchedUserAgents(object sender, System.EventArgs e)
    {
            HttpApplication app = sender as HttpApplication;

            if (_bannedUserAgentsRegex != null &&
                app != null && app.Request != null && !String.IsNullOrEmpty(app.Request.UserAgent))
            {
                if (_bannedUserAgentsRegex.Match(app.Request.UserAgent).Success)
                {
                    app.Response.Redirect(_bannedAgentsRedirectUrl);
                }
            }
    }

    public void Dispose()
    { }

    #endregion
}

Вам нужно будет зарегистрировать его в web.config и указать регулярное выражение, которое будет использоваться для сопоставления строк пользовательского агента. Вот один, который я использовал для блокировки трафика msnbot / 1.1:

<configuration> 
    <appSettings>
        <add key="UserAgentBasedRedirecter.UserAgentsRegex" value="^msnbot/1.1" />
    </appSettings>
...
    <system.web>
        <httpModules>
            <add name="UserAgentBasedRedirecter" type="Andies.Web.Traffic.UserAgentBasedRedirecter, Andies.Web" />
        </httpModules>
    </system.web>
</configuration>
3
ответ дан 5 December 2019 в 12:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: