代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Asp.Net
】
获取网站来源,以及搜索引擎来源的关键字
作者:
Dezai.CN
/ 发布于
2012/2/20
/
605
<div>using System; using System.Collections.Generic; using System.Text; using System.Collections.Specialized; using System.Web; using System.Text.RegularExpressions;</div> <div>namespace HC.Common { public class UrlOpers { /// <summary> /// 获取url参数和值,参数为nvc.Keys[i],对应的值为nvc[i] /// </summary> /// <param name="url"></param> /// <returns></returns> public static NameValueCollection ParseUrl(string url) { if (url == null) return null;</div> <div> NameValueCollection nvc = new NameValueCollection(); int questionMarkIndex = url.IndexOf('?'); if (questionMarkIndex == -1) { return null; } if (questionMarkIndex == url.Length - 1) return null; string ps = url.Substring(questionMarkIndex + 1);</div> <div> // 开始分析参数对 Regex re = new Regex(@"(^|&)?(/w+)=([^&]+)(&|$)?", RegexOptions.Compiled); MatchCollection mc = re.Matches(ps);</div> <div> foreach (Match m in mc) { nvc.Add(m.Result("$2"), m.Result("$3")); } return nvc; } public static void SetLaiYuan() { string LaiyuanUrl = "";//来源url string LaiyuanHost = "";//来源域名 string LaiyuanQuery = "";//查询字符串 string CurrentPage = "";//目标页 CurrentPage = configHelper.GetConfigString("Domain") + HttpContext.Current.Request.RawUrl.ToString(); if (HttpContext.Current.Request.UrlReferrer != null) { LaiyuanHost = HttpContext.Current.Request.UrlReferrer.Host.ToString().ToLower(); LaiyuanQuery = HttpContext.Current.Request.UrlReferrer.PathAndQuery.ToString(); LaiyuanUrl = LaiyuanHost + LaiyuanQuery; string code = getCode(LaiyuanUrl); string keyName = LaiyuanKeyName(LaiyuanUrl, code); if (LaiyuanHost.IndexOf(configHelper.GetConfigString("Domain")) == -1) //如果来自其它网站的链接,则更新laiyuan和laiyuan2 { Cookies.SetCookie("laiyuanKeyName",keyName, false); Cookies.SetCookie("laiyuan", LaiyuanUrl, false); Cookies.SetCookie("laiyuan2", CurrentPage, false); } } } /// <summary> /// 读取用户来源,如果laiyuan为空则返回默认值 /// </summary> /// <returns></returns> public static string GetLaiYuan() { if (Cookies.GetCookie("laiyuan") != string.Empty) { return Cookies.GetCookie("laiyuan"); } else { if (Cookies.GetCookie("laiyuan2") != string.Empty) return (configHelper.GetConfigString("Domain") + "," + Cookies.GetCookie("laiyuan2")); else return (configHelper.GetConfigString("Domain")); } } /// <summary> /// 读取url关键字 /// </summary> /// <returns></returns> public static string getLaiYuanKeyName() { if (Cookies.GetCookie("laiyuanKeyName") != string.Empty) { return Cookies.GetCookie("laiyuanKeyName"); } else return ""; } /// <summary> /// 得到url编码 /// </summary> /// <param name="url"></param> /// <returns></returns> public static string getCode(string url) { Uri u = new Uri(url); string host = u.Host.ToString().ToLower(); string query = u.PathAndQuery.ToString(); url = "http://" + host + query; NameValueCollection nvc = ParseUrl(url); string bianma = "UTF-8"; string gb2312 = "<a href="http://www.baidu.com,www1.baidu.com,www.baidu.com.,www.baidu.com.hk,202.108.22.5,119.75.213.61,zhidao.baidu.com,news.baidu.com,cache.baidu.com,tieba.baidu.com,cpro.baidu.com,114search.118114.cn,www.soso.com,web.gougou.com,www.sogou.com,hap1.ucweb.com.cn">www.baidu.com,www1.baidu.com,www.baidu.com.,www.baidu.com.hk,202.108.22.5,119.75.213.61,zhidao.baidu.com,news.baidu.com,cache.baidu.com,tieba.baidu.com,cpro.baidu.com,114search.118114.cn,www.soso.com,web.gougou.com,www.sogou.com,hap1.ucweb.com.cn</a>"; if (gb2312.IndexOf(host) > -1) bianma = "GB2312"; if (nvc != null) { #region 处理hap1.ucweb.com.cn,如:hap1.ucweb.com.cn/baidu_groups/web/http/m7.baidu.com/coop/s?pn=6&word=%E5%B9%BF%E6%B1%89%E6%9C%89%E6%B2%A1%E8%8B%B1%E8%AF%AD%E8%BF%87%E7%BA%A7%E8%80%83%E8%AF%95%E7%9A%84%E5%9F%B9%E8%AE%AD%E7%8F%AD&rn=6&from=2001f。默认的是gb2312,如果pn!="" and tn="" 那么编码就是utf-8 if (host == "hap1.ucweb.com.cn") { bool mark1 = false; bool mark2 = false; for (int i = 0; i < nvc.Count; i++) {</div> <div> if (nvc.Keys[i].ToString().Trim() == "pn" && nvc[i] != "") { mark1 = true; } if (nvc.Keys[i].ToString().Trim() == "tn" && nvc[i] != "") { mark2 = true; } <div> } if (mark1 && !mark2) bianma = "UTF-8"; } #endregion else { for (int i = 0; i < nvc.Count; i++) { if (nvc.Keys[i].ToString().Trim() == "ie") { if (nvc[i] != "") bianma = nvc[i]; } } } } return bianma; } /// <summary> /// 得到来源的关键字,主要用于搜索引擎 /// </summary> /// <param name="url"></param> /// <param name="code"></param> /// <returns></returns> public static string LaiyuanKeyName(string url, string code) { string keyName = ""; if (url == null) return keyName; Uri u = new Uri(url); string host = u.Host.ToString().ToLower(); string query = u.PathAndQuery.ToString(); url = "http://" + host + System.Web.HttpUtility.UrlDecode(query, System.Text.UnicodeEncoding.GetEncoding(code)); NameValueCollection nvc = ParseUrl(url); string strkeyName = ",wd,word,kw,q,search,url,query,p,w,"; if (nvc != null) { string mark = ""; for (int i = 0; i < nvc.Count; i++) { if (strkeyName.IndexOf("," + nvc.Keys[i].ToString().Trim() + ",") > -1 && mark != nvc[i]) { keyName += nvc[i]; mark = nvc[i]; } } } return keyName; } } } </div>
试试其它关键字
获取网站来源
同语言下
.
gzip压缩
.
实现http多线程断点续传下载文件
.
实现多线程断点续传下载大文件
.
生成字符串的 CheckSum
.
根据 UserAgent 获取浏览器的类型和版本
.
根据 Agent 判断是否是智能手机
.
隐藏手机号中间四位为*方法
.
合并图片(二维码和其他图片合并)
.
ASP.NET CORE中判断是否移动端打开网页
.
ASP.NET(C#)实现页面计时(定时)自动跳转
可能有用的
.
实现测量程序运行时间及cpu使用时间
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
Dezai.CN
贡献的其它代码
(
4037
)
.
多线程Socket服务器模块
.
生成随机密码
.
清除浮动样式
.
弹出窗口居中
.
抓取url的函数
.
使用base HTTP验证
.
div模拟iframe嵌入效果
.
通过header转向的方法
.
Session操作类
.
执行sqlite输入插入操作后获得自动编号的ID
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3