Man*_*rok 6 membership asp.net
更新:我刚刚意识到我们正在使用谷歌迷你搜索来抓取网站,以便我们支持谷歌搜索.这必然会创建一个匿名的配置文件,不仅可以进行每次抓取,甚至可以创建每个页面 - 这是可能的吗?
大家好,需要一些建议!
我们的网站每天大约收到50,000次点击,我们使用匿名的ASP.Net会员资料/用户,这导致数百万(当前4.5米)的"活动"配置文件和数据库"爬行",我们每夜都有一个任务清理所有不活动的.
我们无法拥有450万独立访客(我们的县人口只有1/2万),这可能是由爬虫和蜘蛛造成的吗?
此外,如果我们不得不忍受大量的配置文件,那么无论如何都要优化数据库?
谢谢
千电子伏
更新以下对话:
我是否可以建议您实现一个过滤器,可以通过请求标头识别爬虫,并记录匿名 cookie,您可以在当天晚些时候进行记录。解密并删除带有关联 UserId 的匿名 aspnet_profile 和 aspnet_users 记录。
您可能正在打一场失败的战斗,但至少您会清楚地了解所有流量来自何处。
AnonymousId cookie 和代理匿名配置文件在上次使用后 90 天内有效。这可能会导致匿名配置文件堆积。
处理这个问题的一个非常简单的方法是使用ProfileManager.
ProfileManager.DeleteInactiveProfiles(ProfileAuthenticationOption.Anonymous, DateTime.Now.AddDays(-7));
Run Code Online (Sandbox Code Playgroud)
将清除过去 7 天内未访问过的所有匿名个人资料。
但这会在 aspnet_Users 中留下匿名记录。Membership不公开类似于ProfileManager删除陈旧匿名用户的方法。
所以...
最好的选择是原始 sql 攻击,从您认为过时的 aspnet_Profile 中删除,然后在 aspnet_User where 上运行相同的查询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));
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
参考:http ://www.codeproject.com/Articles/39026/Exploring-Web-config-system-web-httpModules.aspx
| 归档时间: |
|
| 查看次数: |
1604 次 |
| 最近记录: |