数以百万计的匿名ASP.Net个人资料?
更新:我刚刚意识到我们正在使用谷歌迷你搜索来抓取网站,以便我们支持谷歌搜索.这必然会创建一个匿名的配置文件,不仅可以进行每次抓取,甚至可以创建每个页面 – 这是可能的吗?
大家好,需要一些建议! 我们的网站每天大约收到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引导所有请求 您可以实现一个模块,该模块监视 例: 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 为什么IIS / ASP.Net / MVC3将max-age设置为
- asp.net-mvc – 将查询字符串参数传递给.net mvc中的UrlHel
- asp.net – MVC应用程序中的Aspx母版页
- asp.net-core – Razor模板中的特殊字符未正确编码
- asp.net-mvc-4 – WebApi Json.NET自定义日期处理
- asp.net-mvc – asp.net mvc 3预选Html.DropDownListFor不能
- asp.net – 此行已经属于另一个表
- asp.net – global.asax断点未命中
- asp.net-core – 如何停止自托管的Kestrel应用程序?
- asp.net-mvc – MVC架构 – 重新使用相同的viewmodel进行读
- asp.net – 如何测试开发机器上的子域? abc.loc
- asp.net – 来自root抛出异常的ServiceStack RES
- asp.net-mvc – ASP.NET MVC IIS7.5:将网站从W7
- asp.net – asp .net查询字符串编码和解码
- asp.net-web-api2 – SwashBuckle / Swagger –
- Exchange 2016通过New-mailboxSearch批量删邮件
- ASP.NET MVC 4实体框架6 SQL Compact Edition 4.
- asp.net – 调试时编辑源代码
- ASP.NET核心中的Redis缓存
- ASP.NET – 在GridViewRowEventArgs Row.Cells.I