//获取域名是否已经备案 public static int getDomainISBeiAN(string domain) { int re = 0; if (domain.Contains("http://")) { domain = new Uri(domain.Trim()).Host.Replace("www.", ""); } else { domain = domain.Trim().Replace("www.", ""); } int l = domain.Split('.').Length; if (l > 2) { domain = domain.Split('.')[l - 2] + "." + domain.Split('.')[l - 1]; } CookieCollection cookies = new CookieCollection(); string html = new xkHttp().httpGET("http://www.15so.com/baidu/index.html?type=0&kword=" + domain, ref cookies); if (html.Contains("查看详细备案信息")) { re = 1; } return(re); }
/// <summary> /// 获取某站点关键字在某搜索引擎的排名 /// </summary> /// <param name="_engine"></param> /// <param name="Url"></param> /// <param name="KeyWord"></param> /// <returns></returns> public static string engineKeyWordinfo(EnumSearchEngine _engine, string Url, string KeyWord) { string re = "200+"; string Html = ""; string searchUrl = ""; switch (_engine) { case EnumSearchEngine.Baidu: EchoHelper.Echo("关键词【" + KeyWord + "】的排名查询中,请稍后...", "", EchoHelper.EchoType.普通信息); searchUrl = "http://i.linkhelper.cn/searchkeywords.asp"; string postData = StringHelper.urlencode("url=" + Url + "&querywords=" + KeyWord + "&btnsubmit=%B2%E9+%D1%AF", "gb2312"); CookieCollection cookies = new CookieCollection(); Html = new xkHttp().httpPost(searchUrl, postData, ref cookies, searchUrl, Encoding.GetEncoding("gb2312")); re = RegexHelper.getMatch(Html, "百度排名:(.*?) ", 1); if (re.Contains("排名在")) { re = "200+"; } break; case EnumSearchEngine.Google: break; } return(re); }
/// <summary> /// 把内容中的图片,相对地址变为绝对地址。 /// </summary> /// <param name="tmp_content"></param> /// <param name="url"></param> public static void ImageSrc(ref string tmp_content, string url) { //如果遇到使用绝对路径的图片,转换为全路径。 NodeList htmlNodes = new Parser(new Lexer(tmp_content.Replace("<IMG", "<img").Replace("<Img", "<img"))).Parse(new TagNameFilter("img")); for (int j = htmlNodes.Count - 1; j >= 0; j--) { ImageTag link = (ImageTag)htmlNodes.ElementAt(j); string urlpart = link.GetAttribute("src"); if (!string.IsNullOrEmpty(urlpart) && !new Regex(@"^http:").IsMatch(urlpart)) { urlpart = new xkHttp().getDealUrl(url, urlpart); string oldlink = link.ToHtml(); link.RemoveAttribute("src"); link.RemoveAttribute("onclick"); string newsrc = "src=\"" + urlpart + "\" "; string newlink = link.ToHtml(); newlink = newlink.Insert(5, newsrc); tmp_content = tmp_content.Replace(oldlink, newlink); //EchoHelper.Echo("成功转换了一个图片的SRC属性!", "", EchoHelper.EchoType.普通信息); } if (!string.IsNullOrEmpty(urlpart) && new Regex(@"^\.\.").IsMatch(urlpart)) { string oldlink = link.ToHtml(); tmp_content = tmp_content.Replace(oldlink, ""); } } }
/// <summary> /// 函数名称:GetDataFromUrl /// 功能说明:获取url指定的网页的源码 /// 参数:string url用于指定 url /// 参数:ref Encoding encode用来获取网页中的字符集编码 /// </summary> /// <param name="url"></param> /// <param name="encode"></param> /// <returns></returns> public static string GetDataFromUrl(string url) { EchoHelper.Echo("尝试链接:" + url + ",请稍等...", "内容下载", EchoHelper.EchoType.任务信息); CookieCollection cookies = new CookieCollection(); string html = new xkHttp().httpGET(url, ref cookies); return(html); }
/// <summary> /// 函数名称:GetNextPageUrl /// 函数功能:从网页源码中提取下一页URL,并且如果下一页URL不完整,补全下一页URL /// 函数参数:rawtext,当前网页源码,url 当前网页的绝对url /// 函数返回值:下一页的绝对url,若无下一页url则返回空字符串 /// </summary> /// <param name="rawtext"></param> /// <returns></returns> public static string GetNextPageUrl(string rawtext, string url) { string urlpart = "";//存放提取出的URL try { NodeList htmlNodes = new Parser(new Lexer(rawtext)).Parse(new TagNameFilter("a")); for (int i = htmlNodes.Count - 1; i >= 0; i--) { ATag link = (ATag)htmlNodes.ElementAt(i); string temp = link.StringText; Regex fetchNextPage = new Regex(@"下一页"); if (string.IsNullOrEmpty(temp) || !fetchNextPage.IsMatch(temp)) { htmlNodes.Remove(i); } } //如果<a>标签链表不空,则说明当前页不是最后一页,含有下一页URL,并提取出下一页URL if (htmlNodes.Count > 0) { ATag link = (ATag)htmlNodes.ElementAt(0); urlpart = link.GetAttribute("href"); //判断从源码中提取出的URL是否需要补全 if (!string.IsNullOrEmpty(urlpart) && new Regex(@"^http:").IsMatch(urlpart)) { } else if (!string.IsNullOrEmpty(urlpart)) { urlpart = new xkHttp().getDealUrl(url, urlpart); } } if (nextPages.Contains(urlpart)) //若下一页已经存在。 { urlpart = ""; } else { nextPages.Add(urlpart);//加入到集合中。 } } catch { } if (!string.IsNullOrEmpty(urlpart)) { urlpart = urlpart.Trim(); } return(urlpart); }
public static string GetKeywords(string url) { string re = ""; try { CookieCollection cookies = new CookieCollection(); string html = new xkHttp().httpGET(url, ref cookies).ToLower(); NodeFilter filter = new HasAttributeFilter("name", "keywords"); NodeList htmlNodes = new Parser(new Lexer(html.ToLower())).Parse(filter); ITag t = (MetaTag)htmlNodes[0]; if (t.Attributes != null && t.Attributes.Count > 0) { re = t.Attributes["CONTENT"].ToString(); } } catch { } return(re); }
public static int checkDomain(string domain) { if (domain.Contains("http://")) { domain = new Uri(domain.Trim()).Host.Replace("www.", ""); } else { domain = domain.Trim(); } int re = 0; CookieCollection cookies = new CookieCollection(); string html = new xkHttp().httpGET("http://whoissoft.com/" + domain, ref cookies); if (html.Contains("No match for domain")) { re = 1; } return(re); }
/// <summary> /// /// </summary> /// <param name="title">文章标题</param> /// <param name="turl">文章地址</param> /// <param name="siteName">站点名</param> /// <param name="taskName">任务名</param> /// <param name="siteUrl">站点地址</param> public static void upToRenzheBBS(string title, string turl, string siteName, string taskName, string siteUrl) { if (turl.Contains("127.0.0.1") || turl.Contains("localhost")) { return;//如果是本机测试用的话,就不要去上传到论坛上了。 } title = string.Format("【{0}-{1}】:{2}", Login_Base.member.group, Login_Base.member.netname, title); string content = string.Format("授权会员:{0}\n用户组别:{1}\n当前金币:{7}\n\n网站名称:{2}\n任务名称:{3}\n[hide=99999]网站地址:{4}\n\n文章标题:{5}\n文章地址:{6}[/hide]", Login_Base.member.netname, Login_Base.member.group, siteName, taskName, siteUrl, title, turl, Login_Base.member.userMoney.ToString() ); if (title.Length > 40) { title = StringHelper.SubString(title, 0, 38); } content = content.Replace("&", "-"); string purl = "http://www.renzhe.org/forum.php?mod=post&action=newthread&fid=37&extra=&topicsubmit=yes"; string pdata = string.Format("formhash={0}&posttime=&wysiwyg=0&subject={1}&checkbox=0&message={2}&replycredit_extcredits=0&replycredit_times=1&replycredit_membertimes=1&replycredit_random=100&readperm=&price=&save=&usesig=1&allownoticeauthor=1", Login_Base.member.formhash, title, content); string reffer = "http://www.renzhe.org/forum.php"; string html = new xkHttp().httpPost(purl, pdata, ref Login_Base.member.cookies, reffer, Encoding.UTF8); if (html.Contains("非常感谢,您的主题已发布")) { Login_Base.member.userMoney--; EchoHelper.Echo("上传日志成功!金币-1", "忍者X2日志系统", EchoHelper.EchoType.任务信息); } else { FilesHelper.WriteFile(Application.StartupPath + @"\Log\未知标识\【忍者X2日志】发布没有找到标志_" + DateTime.Now.Millisecond.ToString() + ".html", html, Encoding.UTF8); EchoHelper.Echo("跳过上传日志:随机抽取未选中。", "忍者X2日志系统", EchoHelper.EchoType.普通信息); } }
public static DateTime getDomainExpired(string domain) { if (domain.Contains("http://")) { domain = new Uri(domain.Trim()).Host.Replace("www.", ""); } else { domain = domain.Trim().Replace("www.", ""); } int l = domain.Split('.').Length; if (l > 2) { domain = domain.Split('.')[l - 2] + "." + domain.Split('.')[l - 1]; } DateTime re = DateTime.Now.AddDays(-1); CookieCollection cookies = new CookieCollection(); string html = new xkHttp().httpGET("http://tool.chinaz.com/DomainDel/?wd=" + domain, ref cookies); //循环5次,去抓取域名信息 int i = 0; while (html.Contains("没有查询到相应的信息.")) { html = new xkHttp().httpGET("http://tool.chinaz.com/DomainDel/?wd=" + domain, ref cookies); i++; if (i > 10) { break; } } if (html.Contains("域名到期时间")) { string edate = RegexHelper.getHtmlRegexText(html, "{域名到期时间</td><td class=\"deltd1\">(.*?)</td></tr>}"); DateTime dt = new DateTime(Convert.ToInt32(edate.Split('-')[0]), Convert.ToInt32(edate.Split('-')[1]), Convert.ToInt32(edate.Split('-')[2])); re = dt; } return(re); }
/// <summary> /// 站点收录信息 /// </summary> /// <param name="_engine"></param> /// <returns></returns> public static int getBaiduNum(EnumSearchEngine _engine, string url) { //EchoHelper.Echo("网站【" + url + "】的收录查询中,请稍后...", "", EchoHelper.EchoType.普通信息); string regStart = "找到相关结果数"; string regEnd = "个"; string siteUrl = "http://www.baidu.com/s?wd=site%3A" + url; CookieCollection cookies = new CookieCollection(); string html = new xkHttp().httpGET(siteUrl, ref cookies, siteUrl); string Result = StringHelper.GetMetaString(html, regStart, regEnd, true); int re = 9999; try { re = Convert.ToInt32(Result); } catch { re = 0; } if (html.Contains("没有找到与")) { re = 0; } return(re); }
private bool ValidateUser(ref ModelMember member) { member.IS_X_PostKing = false; //验证是否具有发帖权限 string testpostUrl = "http://www.renzhe.org/forum.php?mod=post&action=newthread&fid=36"; string html = new xkHttp().httpGET(testpostUrl, ref member.cookies); if (html.Contains("发表帖子 - 忍者X2站群 - 忍者软件 - RenZhe.org!")) { EchoHelper.Echo("恭喜您,权限核对成功,您已被授权使用忍者X2站群!", "用户验证", EchoHelper.EchoType.任务信息); member.strMessage = "恭喜您,权限核对成功,您已被授权使用忍者X2站群!"; member.IS_X_PostKing = true; } else if (html.Contains("抱歉,您需要设置自己的头像后才能进行本操作")) { EchoHelper.Echo("请完善您的(基本资料、头像),即在论坛上发个帖子激活一下。授权论坛:www.renzhe.org!", "用户验证", EchoHelper.EchoType.错误信息); member.strMessage = "请完善您的(基本资料、头像),即在论坛上发个帖子激活一下。授权论坛:www.renzhe.org!"; } else if (html.Contains("请先绑定手机号码")) { EchoHelper.Echo("请先绑定手机号码,授权论坛:www.renzhe.org!", "用户验证", EchoHelper.EchoType.错误信息); member.strMessage = "请先绑定手机号码,授权论坛:www.renzhe.org!"; } else if (html.Contains("<s>商业授权用户</s>")) { EchoHelper.Echo("您的账户已过期,请到论坛充值续费!", "用户验证", EchoHelper.EchoType.错误信息); member.strMessage = "您的账户已过期,请到论坛充值续费!"; } else if (html.Contains("超时")) { EchoHelper.Echo("链接服务超时!", "用户验证", EchoHelper.EchoType.错误信息); member.strMessage = "链接服务超时!"; } else if (html.Contains("没有权限在该版块发帖")) { EchoHelper.Echo("用户登录验证失败,请重新登录!", "用户验证", EchoHelper.EchoType.错误信息); member.strMessage = "用户登录验证失败,请重新登录!"; } else if (html.Contains("无法解析此远程名称")) { EchoHelper.Echo("域名解析出现问题,请检查您的网络设置!", "用户验证", EchoHelper.EchoType.错误信息); member.strMessage = "域名解析出现问题,请检查您的网络设置!"; } else { EchoHelper.Echo("验证失败,原因未知!", "用户验证", EchoHelper.EchoType.错误信息); member.strMessage = "验证失败,原因未知!"; } if (member.group.Contains("商业授权用户")) { member.IS_X_WordPressBuild = true; } else { member.IS_X_WordPressBuild = false; } return(member.IS_X_PostKing); }
/// <summary> /// 验证用户,通过网络 /// </summary> /// <param name="netname"></param> /// <param name="netpass"></param> /// <param name="hdinfo"></param> /// <returns></returns> protected ModelMember getUser(string netname, string netpass, string hdinfo) { #if DEBUG member.netname = "调试模式"; member.group = "商业授权用户"; member.sitenum = 9999; member.IS_X_WordPressBuild = true; member.IS_X_PostKing = true; member.userMoney = 9999; return(Login_Base.member); #endif string path = Application.StartupPath + "\\Config\\RenZheMember.txt"; string html = ""; DbTools db = new DbTools(); CookieCollection cookies = new CookieCollection(); try { object obj = db.Read(path, "VCDS"); if (obj != null) { member = (ModelMember)obj; } EchoHelper.Echo("连接【忍者软件】用户服务端,进行通信。此过程稍慢,请稍候...", "系统登录", EchoHelper.EchoType.任务信息); //发现有不符的情况,将进行登录验证。 if (member.logintime.Date < DateTime.Now.Date || member.netpass != netpass || member.netname != netname || member.hdinfo != HardWare.getHardCode()) { string purl = "http://www.renzhe.org/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1"; string pdata = "fastloginfield=username&username="******"&password="******"&quickforward=yes&handlekey=ls"; html = new xkHttp().httpPost(purl, pdata, ref cookies, purl, Encoding.GetEncoding("utf-8")); if (html.Contains(">window.location.href='")) { wait.ShowMsg("4/10 您的账户、密码验证成功!"); EchoHelper.Echo("论坛账户、密码验证成功!", "系统登录", EchoHelper.EchoType.任务信息); purl = "http://www.renzhe.org/home.php?mod=spacecp&ac=credit"; html = new xkHttp().httpGET(purl, ref cookies); if (html.Contains("[ 点击这里返回上一页 ]")) { EchoHelper.Echo("忍者服务端维护,暂时关闭,请稍后再试...", "系统登录", EchoHelper.EchoType.错误信息); return(member); } if (html.Contains("您需要先登录才能继续本操作")) { EchoHelper.Echo("您的账号异常,请手工登录论坛检查账户问题!", "系统登录", EchoHelper.EchoType.错误信息); return(member); } if (html.Contains("抱歉,您的 IP 地址不在被允许,或您的账号被禁用,无法访问本站点")) { EchoHelper.Echo("抱歉,您的 IP 地址不在被允许,或您的账号被禁用,无法访问本站点!", "系统登录", EchoHelper.EchoType.错误信息); return(member); } wait.ShowMsg("5/10 您的用户基本信息,获取成功!"); EchoHelper.Echo("您的用户基本信息,获取成功!", "系统登录", EchoHelper.EchoType.任务信息); member.UID = RegexHelper.getHtmlRegexText(html, "{discuz_uid = '(.*?)'}"); member.netname = RegexHelper.getHtmlRegexText(html, "{title=\"访问我的空间\">(.*?)</a>}"); member.sitenum = Convert.ToInt32(RegexHelper.getHtmlRegexText(html, "{站点数:</em>(.*?) </li>}")); member.group = RegexHelper.getHtmlRegexText(html, "{showUpgradeinfo\\)\">(.*?)</a>}"); member.userMoney = Convert.ToInt32(RegexHelper.getHtmlRegexText(html, "{金币:</em>(.*?) }")); member.formhash = RegexHelper.getHtmlRegexText(html, "{formhash=(.*?)\">退出</a>}"); member.cookies = cookies; member.netpass = netpass; member.logintime = DateTime.Now; member.hdinfo = HardWare.getHardCode(); member.IS_X_PostKing = true; EchoHelper.Echo("链接服务端,判断应用授权状态...", "系统登录", EchoHelper.EchoType.任务信息); wait.ShowMsg("6/10 链接服务端,判断应用授权状态!"); } else { wait.ShowMsg("用户验证失败..."); string result = "未知,请重试,登录论坛联系管理员。www.renzhe.org"; if (html.Contains("登录失败")) { result = "请核对您的用户名密码!登录论坛联系管理员。www.renzhe.org"; } if (html.Contains("showWindow('login', 'member.php?mod=logging&action=")) { result = "发现安全问题,清除您的安全问题后,再尝试!www.renzhe.org"; } if (html.Contains("密码错误次数过多")) { result = "密码错误次数过多,稍后再试!登录论坛联系管理员。www.renzhe.org"; } if (html.Contains("无法解析此远程名称")) { result = "无法解析www.renzhe.org,请检查您的网络,稍后再试"; } member.IS_X_PostKing = false; member.IS_X_WordPressBuild = false; EchoHelper.Echo("登录失败:" + result, "系统登录", EchoHelper.EchoType.错误信息); return(member); } } else { wait.ShowMsg("7/10 发现本地密钥,进行快捷登录..."); EchoHelper.Echo("发现本地登录密钥文件,进行验证,请稍后...", "系统登录", EchoHelper.EchoType.任务信息); } #if !DEBUG //向服务端提交member序列化的类,然后验证是否为登录成功的状态。 ValidateUser(ref member); #else //ValidateUser(ref member); #endif ini.up("登录账户密码", "INFO", member.netname); if (member.IS_X_PostKing == false) { member.logintime = DateTime.Now.AddDays(-111); FilesHelper.DeleteFile(path); } else { wait.ShowMsg("8/10 恭喜,您的密钥经服务端验证成功!"); EchoHelper.Echo("恭喜,您的本地密钥,经服务端验证成功,通信一切正常!", "系统登录", EchoHelper.EchoType.任务信息); } } catch (Exception ex) { FilesHelper.DeleteFile(path); EchoHelper.Echo("与服务端通信失败!" + ex.Message, "系统登录", EchoHelper.EchoType.异常信息); } finally { if (member.group.Contains("商业")) { member.IS_X_WordPressBuild = true; } if (member.IS_X_PostKing == true) { wait.ShowMsg("9/10 密钥已保存,下次可快捷登录!"); Thread.Sleep(1200); EchoHelper.Echo("您的本地密钥已保存,下次可快捷登录!", "系统登录", EchoHelper.EchoType.任务信息); db.Save(path, "VCDS", member); } } return(Login_Base.member); }