加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

数以百万计的匿名ASP.Net个人资料?

发布时间:2020-12-16 03:51:16 所属栏目:asp.Net 来源:网络整理
导读:更新:我刚刚意识到我们正在使用谷歌迷你搜索来抓取网站,以便我们支持谷歌搜索.这必然会创建一个匿名的配置文件,不仅可以进行每次抓取,甚至可以创建每个页面 – 这是可能的吗? 大家好,需要一些建议! 我们的网站每天大约收到50,000次点击,我们使用匿名的ASP
更新:我刚刚意识到我们正在使用谷歌迷你搜索来抓取网站,以便我们支持谷歌搜索.这必然会创建一个匿名的配置文件,不仅可以进行每次抓取,甚至可以创建每个页面 – 这是可能的吗?

大家好,需要一些建议!

我们的网站每天大约收到50,000次点击,我们使用匿名的ASP.Net会员资料/用户,这导致数百万(当前4.5米)的“活动”配置文件和数据库“爬行”,我们每夜都有一个任务清理所有不活动的.

我们无法拥有450万独立访客(我们的县人口只有1/2万),这可能是由爬虫和蜘蛛造成的吗?

此外,如果我们不得不忍受大量的配置文件,那么无论如何都要优化数据库?

谢谢

千电子伏

解决方法

更新以下对话:

我建议您实现一个过滤器,该过滤器可以通过请求标头识别爬虫,并记录您当天晚些时候可以使用的匿名cookie.使用关联的UserId解密并删除anon aspnet_profile和aspnet_users记录.

你可能正在打一场失败的战斗,但至少你会清楚地知道所有的交通来自哪里.

AnonymousId cookies和代理匿名配置文件在上次使用后的90天内有效.这可能导致匿名配置文件堆积.

处理此问题的一种非常简单的方法是使用ProfileManager.

ProfileManager.DeleteInactiveProfiles(ProfileAuthenticationOption.Anonymous,DateTime.Now.AddDays(-7));

将清除过去7天内未访问过的所有匿名配置文件.

但是这会让你在aspnet_Users中找到匿名记录.成员资格不会公开类似于ProfileManager的方法来删除过时的匿名用户.

所以…

最好的办法是原始sql攻击,从aspnet_Profile中删除你认为它们陈旧的地方,然后在aspnet_User上运行相同的查询,其中IsAnonymous = 1.

祝你好运.一旦你清理干净,就要保持最佳状态.

更新的更新:

下面的代码仅在IIS7上有效并且如果您通过ASP.Net引导所有请求

您可以实现一个模块,该模块监视robots.txt的请求并获取匿名ID cookie并将其存储在机器人表中,您可以使用该表来安全地每晚清除机器人元的成员资格/配置文件表.这可能有所帮助.

例:

using System;
using System.Diagnostics;
using System.Web;

namespace NoDomoArigatoMisterRoboto
{
    public class RobotLoggerModule : IHttpModule
    {
        #region IHttpModule Members

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

        public void Dispose()
        {
            //noop
        }

        #endregion

        private static void PreSendRequestHeaders(object sender,EventArgs e)
        {
            HttpRequest request = ((HttpApplication)sender).Request;



            bool isRobot = 
                request.Url.GetLeftPart(UriPartial.Path).EndsWith("robots.txt",StringComparison.InvariantCultureIgnoreCase);

            string anonymousId = request.AnonymousID;

            if (anonymousId != null && isRobot)
            {
                // log this id for pruning later
                Trace.WriteLine(string.Format("{0} is a robot.",anonymousId));
            }
        }
    }
}

参考:http://www.codeproject.com/Articles/39026/Exploring-Web-config-system-web-httpModules.aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读