如何判断相同IP的不同的电脑?

hongxv520127 2010-10-22 09:27:16
就是如何定位到电脑上~我试过通过MAC地址和计算机名~但遗憾的是都需要用插件才能获取到这些信息,有没有什么办法是可以不用插件~就能够判断到不同的电脑~~~比如网站同一个IP访问了多次~但是是不同电脑访问的~需要把他们区分开来~
...全文
804 51 打赏 收藏 转发到动态 举报
写回复
用AI写文章
51 条回复
切换为时间正序
请发表友善的回复…
发表回复
newdigitime 2010-10-22
  • 打赏
  • 举报
回复
没有理想的办法

只能从cookie/session、浏览器名称/版本来作一些粗糙的判断
但都不是很有效的。
同一个电脑,换一个浏览器。以上就无效了。
wc_vip 2010-10-22
  • 打赏
  • 举报
回复
//找出此IP是否登录过
public bool QueyUserIP(string strIP)
{
StringBuilder sbselect = new StringBuilder();
sbselect.Append("select Ws_Id from Tab_WebStat where Ws_WebIp=@Ws_WebIp");
SqlParameter sqlapr = dl.GetParam("@Ws_WebIp", SqlDbType.VarChar, strIP, 50);
DataSet ds = dl.GetSelect(sbselect.ToString(), CommandType.Text, sqlapr);
if (ds.Tables[0].Rows.Count > 0)
{
return false;
}
return true;
}


//找出此IP是否今天登录过
public int QueyUserIP(string strIP,string strDateTime)
{
StringBuilder sbselect = new StringBuilder();
sbselect.Append("select Ws_WebAverage from Tab_WebStat where Ws_WebIp=@Ws_WebIp and Ws_StatDate=@Ws_StatDate");
List<SqlParameter> list = new List<SqlParameter>();
list.Add(dl.GetParam("@Ws_WebIp", SqlDbType.VarChar, strIP, 50));
list.Add(dl.GetParam("@Ws_StatDate", SqlDbType.VarChar, DateTime.Now.ToString("yyyy-MM-dd"), 50));
DataSet ds = dl.GetSelect(sbselect.ToString(), CommandType.Text, list.ToArray());
if (ds.Tables[0].Rows.Count > 0)
{
//返回的是浏览次数
return int.Parse(ds.Tables[0].Rows[0][0].ToString());
}
return 0;
}

//添加新的IP浏览信息(iTpye为状态 0的时候为IP是新的今天刚登录 1的时候IP为旧的今天刚登录)
public bool AddUserIP(string strIP,int iType)
{
StringBuilder sbselect = new StringBuilder();
sbselect.Append("insert into Tab_WebStat(Ws_WebIp,Ws_WebAverage,Ws_IsNew,Ws_StatDate)values(@Ws_WebIp,@Ws_WebAverage,@Ws_IsNew,@Ws_StatDate)");
List<SqlParameter> list = new List<SqlParameter>();
list.Add(dl.GetParam("@Ws_WebIp", SqlDbType.VarChar, strIP, 50));
list.Add(dl.GetParam("@Ws_WebAverage", SqlDbType.Int,1));
if (iType == 0)
{
list.Add(dl.GetParam("@Ws_IsNew", SqlDbType.Bit, true));
}
else
{
list.Add(dl.GetParam("@Ws_IsNew", SqlDbType.Bit, false));
}
list.Add(dl.GetParam("@Ws_StatDate", SqlDbType.VarChar, DateTime.Now.ToString("yyyy-MM-dd"), 50));
int intQuery = dl.GetInUpDel(sbselect.ToString(), CommandType.Text, list.ToArray());
if (intQuery > 0)
{
return true;
}
return false;
}

//如果今天是同一IP多次浏览则更新 浏览次数
public bool UpDataUserIP(string strIP, int iNumber)
{
StringBuilder sbselect = new StringBuilder();
sbselect.Append("update Tab_WebStat set Ws_WebAverage=@Ws_WebAverage where Ws_WebIp=@Ws_WebIp and Ws_StatDate=@Ws_StatDate");
List<SqlParameter> list = new List<SqlParameter>();
list.Add(dl.GetParam("@Ws_WebIp", SqlDbType.VarChar, strIP, 50));
list.Add(dl.GetParam("@Ws_WebAverage", SqlDbType.Int, iNumber + 1));
list.Add(dl.GetParam("@Ws_StatDate", SqlDbType.VarChar, DateTime.Now.ToString("yyyy-MM-dd"), 50));
int intQuery = dl.GetInUpDel(sbselect.ToString(), CommandType.Text, list.ToArray());
if (intQuery > 0)
{
return true;
}
return false;
}
emptyness 2010-10-22
  • 打赏
  • 举报
回复
也不想想, 怎么可能的事情. 哼哼哼.路过.
浏览器发的 只是HTTP协议的东西.
HTTP里有什么 识别电脑的东西吗? 除了cookie session之类的 显然 就没有了.
问的 是一个 无米之炊的问题.
不动用activeX, flash这样的本地性质的程序 是别指望什么高级功能的.
hongxv520127 2010-10-22
  • 打赏
  • 举报
回复
好像跑题了~没说必须要mac地址·或者计算机名~~只要能判断不同的电脑就行~~IP,COOKIE,SESSION那些肯定是不考虑了~
fwqkey 2010-10-22
  • 打赏
  • 举报
回复
不好判断.没有绝对的
babyself1987 2010-10-22
  • 打赏
  • 举报
回复
ARP命令那个IP可以返回同IP的机器的MAC地址等信息
babyself1987 2010-10-22
  • 打赏
  • 举报
回复
关键字 ARP
FocusNT 2010-10-22
  • 打赏
  • 举报
回复
如果非要做,只能用ActiveX,可能可以,没试过
FocusNT 2010-10-22
  • 打赏
  • 举报
回复
web的本来就是在服务器上的,如果让你随便可以获取电脑的信息,那谁还敢上网
hongxv520127 2010-10-22
  • 打赏
  • 举报
回复
额~~~楼上的。。。要是能获取机器名~还用得着跑这里来发帖吗。。。
罗纳尔迪尼奥 2010-10-22
  • 打赏
  • 举报
回复
用IP+机器名来区分是否是不同的电脑

System.Net.IPAddress ip = System.Net.IPAddress.Parse(HttpContext.Current.Request.UserHostAddress.ToString());
System.Net.IPHostEntry ihe = Dns.GetHostEntry(ip)
//机器名
string clientname = ihe.HostName;
FocusNT 2010-10-22
  • 打赏
  • 举报
回复
而且有很多因素在...
FocusNT 2010-10-22
  • 打赏
  • 举报
回复
你外网的直接获取不一定准确的 。需要自己写控件
hongxv520127 2010-10-22
  • 打赏
  • 举报
回复
楼上的~我不是要局域网内的啊~需要获取外网的~~如果没办法获取也可以考虑用其他参数来判断~只要能唯一表示一台电脑就可以了~22楼:用IP+浏览器+版本+cookie~感觉还是不够精确吧~~可能一个公司的外网IP都是一样的~机器都是同时装的~那就可能那几个参数都一样了~就判断不出来了~
FocusNT 2010-10-22
  • 打赏
  • 举报
回复
http://www.51bcw.com/thread-html-3343.htm 获取局域网内的ip地址和MAC地址
http://www.51bcw.com/article-html-1588.htm ASP.NET获取IP地址和MAC地址的方法

接分
机器人 2010-10-22
  • 打赏
  • 举报
回复
不用ActiveX,根本无法取到客户端的MAC地址。

光靠Asp.net没有权限。还可以考虑用SliverLight,倒是可以。
kkbac 2010-10-22
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 bclz_vs 的回复:]

不对,是用IP和Cookie来区分
[/Quote]
ip
浏览器名称
浏览器版本

cookies

如果版本重复, cookies经常清空. 这些也不能完全判断. 但基本可以达到lz要求的精度了吧.
ruiandli 2010-10-22
  • 打赏
  • 举报
回复
这个却实不好实现。关注,学习!
hongxv520127 2010-10-22
  • 打赏
  • 举报
回复
16楼的~代码我试了~好像也不行~获取出来的也是IP
hongxv520127 2010-10-22
  • 打赏
  • 举报
回复
14楼~可以获取客户端的机器码吗?有代码吗~谢谢~~
加载更多回复(26)

62,271

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧