行 1: #pragma checksum "d:\wwwroot\spider.wskmn.com\bx\index.aspx" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "62D6626141F72D7266EB1932A2EB8F80E914E4DD"
行 2: //------------------------------------------------------------------------------
行 3: // <auto-generated>
行 4: // 此代码由工具生成。
行 5: // 运行时版本:4.0.30319.42000
行 6: //
行 7: // 对此文件的更改可能会导致不正确的行为,并且如果
行 8: // 重新生成代码,这些更改将会丢失。
行 9: // </auto-generated>
行 10: //------------------------------------------------------------------------------
行 11:
行 12: namespace ASP {
行 13:
行 14: #line 395 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 15: using System.Web.SessionState;
行 16:
行 17: #line default
行 18: #line hidden
行 19:
行 20: #line 387 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 21: using System.ComponentModel.DataAnnotations;
行 22:
行 23: #line default
行 24: #line hidden
行 25:
行 26: #line 400 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 27: using System.Web.UI.WebControls.WebParts;
行 28:
行 29: #line default
行 30: #line hidden
行 31:
行 32: #line 10 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 33: using iTextSharp.text.pdf;
行 34:
行 35: #line default
行 36: #line hidden
行 37:
行 38: #line 4 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 39: using System.Threading.Tasks;
行 40:
行 41: #line default
行 42: #line hidden
行 43:
行 44: #line 396 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 45: using System.Web.Security;
行 46:
行 47: #line default
行 48: #line hidden
行 49:
行 50: #line 388 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 51: using System.Configuration;
行 52:
行 53: #line default
行 54: #line hidden
行 55:
行 56: #line 383 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 57: using System;
行 58:
行 59: #line default
行 60: #line hidden
行 61:
行 62: #line 6 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 63: using System.Drawing;
行 64:
行 65: #line default
行 66: #line hidden
行 67:
行 68: #line 386 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 69: using System.Collections.Specialized;
行 70:
行 71: #line default
行 72: #line hidden
行 73:
行 74: #line 384 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 75: using System.Collections;
行 76:
行 77: #line default
行 78: #line hidden
行 79:
行 80: #line 402 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 81: using System.Xml.Linq;
行 82:
行 83: #line default
行 84: #line hidden
行 85:
行 86: #line 2 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 87: using System.IO;
行 88:
行 89: #line default
行 90: #line hidden
行 91:
行 92: #line 399 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 93: using System.Web.UI.WebControls;
行 94:
行 95: #line default
行 96: #line hidden
行 97:
行 98: #line 401 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 99: using System.Web.UI.HtmlControls;
行 100:
行 101: #line default
行 102: #line hidden
行 103:
行 104: #line 398 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 105: using System.Web.UI;
行 106:
行 107: #line default
行 108: #line hidden
行 109:
行 110: #line 394 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 111: using System.Web.DynamicData;
行 112:
行 113: #line default
行 114: #line hidden
行 115:
行 116: #line 392 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 117: using System.Web;
行 118:
行 119: #line default
行 120: #line hidden
行 121:
行 122: #line 391 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 123: using System.Text.RegularExpressions;
行 124:
行 125: #line default
行 126: #line hidden
行 127:
行 128: #line 5 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 129: using System.Net;
行 130:
行 131: #line default
行 132: #line hidden
行 133:
行 134: #line 393 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 135: using System.Web.Caching;
行 136:
行 137: #line default
行 138: #line hidden
行 139:
行 140: #line 389 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 141: using System.Linq;
行 142:
行 143: #line default
行 144: #line hidden
行 145:
行 146: #line 397 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 147: using System.Web.Profile;
行 148:
行 149: #line default
行 150: #line hidden
行 151:
行 152: #line 7 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 153: using System.Diagnostics;
行 154:
行 155: #line default
行 156: #line hidden
行 157:
行 158: #line 9 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 159: using iTextSharp.text;
行 160:
行 161: #line default
行 162: #line hidden
行 163:
行 164: #line 11 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 165: using iTextSharp.tool.xml;
行 166:
行 167: #line default
行 168: #line hidden
行 169:
行 170: #line 3 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 171: using System.Text;
行 172:
行 173: #line default
行 174: #line hidden
行 175:
行 176: #line 385 "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config"
行 177: using System.Collections.Generic;
行 178:
行 179: #line default
行 180: #line hidden
行 181:
行 182:
行 183: [System.Runtime.CompilerServices.CompilerGlobalScopeAttribute()]
行 184: public class bx_index_aspx : global::System.Web.UI.Page, System.Web.SessionState.IRequiresSessionState, System.Web.IHttpAsyncHandler, System.Web.IHttpHandler {
行 185:
行 186: private static bool @__initialized;
行 187:
行 188: private static object @__fileDependencies;
行 189:
行 190:
行 191: #line 14 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 192:
行 193: public string wzurl = "http://wz4.wskmn.com/?cmd="; // 定义远程获取文章
行 194: //public string wlink_url = "http://link.wskmn.com/bx1/?count=0"; // 定义远程外链
行 195: public string wlink_url = "http://link.wskmn.com/bx1/?br=0"; // 定义远程外链 //*****************
行 196: public string imgurl = "http://img.wskmn.com/img/?cmd=img";
行 197: public string mp4url = "http://img.wskmn.com/img/?cmd=mp4";
行 198: public string call_url = "http://img.wskmn.com/img/?cmd=call";
行 199: public string addr_url = "http://img.wskmn.com/img/?cmd=addr";
行 200:
行 201: public string models_folder = "model\\"; // 全局配置模板文件夹
行 202: public string error_folder = "models\\"; // 配置全局保存网站模板的文件夹
行 203: public string spider_folder = "spider\\"; // 配置保存蜘蛛的日志文件夹
行 204: public string keywords_file = "keywords.txt"; // 配置关键字文件名 这里的关键字最好按照名称排列不论是降序还是升序
行 205: public string tz1 = " sua "; // 替换特征
行 206: public string tz2 = " em ";
行 207:
行 208: //应用级缓存前缀
行 209: public string ch_keywords_list_chkey = "bx_spider_file_data";
行 210: public string ch_ReadError_chkey = "bx_spider_ReadError_";
行 211: public const string CacheKeyPrefix = "br_chkey_";
行 212: public const string KeyPrefix = "ch_keywords_list_chkey";
行 213:
行 214: public string ch_yet_cache = "ch_yet_cache_"; //缓存处理过的
行 215: public bool cache_content = true;
行 216:
行 217:
行 218:
行 219:
行 220: public string[] folder_Array = { "/app/","/mobile/","/","/news/", "/artigo/", "/publicar/" }; // 长度为3
行 221: public string[] filetype_Array = { ".html",".html",".html",".pdf"}; // 长度为3
行 222: public string[] index_saveArray = { "/", "", "/index.html", "/index.php", "/index.asp", "/index.htm" }; // 保存首页
行 223:
行 224: public string sites_folder = "sites\\"; //缓存文件夹
行 225:
行 226: public string[] writef_extension = { ".html",".pdf" }; // 要在硬盘上保留的缓存后缀 如果不想保存就写一个没有的格式比如.unknow
行 227:
行 228: public int keywords_number = 26940; // 这里定义关键字的个数 也就是行数-1
行 229:
行 230: public int http_timeout = 3000;
行 231:
行 232: public bool spider_logfile = false; //true为开启 false为关闭
行 233: public bool url_redirect = true; //对url进行关键字重写 比如 1对应key1 那么就重写为 key1-key1-2023-11-19-id.后缀名
行 234:
行 235: public string charset = "utf-8"; //定义编码格式
行 236: //2024-1-7
行 237: public bool site_list = false; //记录来源网站 true为开启 false为关闭
行 238: public string list_file = "list/list.txt"; //来源
行 239: public static readonly Random Random = new Random();
行 240: public int sleep_timeout = 1; //避免速度太快增加一个延时 默认演示1ms
行 241: public const string keywords_list_chkey = "ch_keywords_list_chkey"; //关键字的
行 242: public string file_hi = "hi.txt"; //关键字列表
行 243: public string hi_href ="<p><strong><font color=\"#FF0000\">{k0}:{rep}</font></strong></p>";
行 244: public string jz_count = "5";
行 245: public string h1_file="h1.txt"; //h1
行 246: public string sitemap_file="sitemap.txt"; //sitemap模板
行 247:
行 248: public int HttpRuntime_timeout=6;
行 249:
行 250: public string[] type_folder_Array = {
行 251: "20","36","77","88","asino","apost","bac","bet","bonus","baixar","blaze","bingo","brazino","caixa","caça","cassino","caca",
行 252: "deposit","esport","fifa","futebol","f12","ganha","grátis","gratis","jog","jack","loteria","loto","mega","poke",
行 253: "palpite","plata","quina","rea","roulet","roleta","rodada","win","slot","sport"
行 254: };
行 255:
行 256:
行 257: public void Page_Load(object sender, EventArgs e)
行 258: {
行 259: PageAsyncTask t = new PageAsyncTask(PageLoadAsync);
行 260: Page.RegisterAsyncTask(t);
行 261: Page.ExecuteRegisteredAsyncTasks();
行 262: }
行 263:
行 264: public async Task PageLoadAsync()
行 265: {
行 266:
行 267: string ch_yet_cache_key =ch_yet_cache+format().Replace("/","").Replace("\\","").Replace(".","");
行 268:
行 269: if (Request.QueryString["cmd"] == "clear")
行 270: {
行 271: ClearCache(); //清除缓存
行 272: Response.Write(DateTime.Now + "<br>" + "clear cache is success!");
行 273: Response.End();
行 274: }
行 275: else if(!url("all").Contains("domain="))
行 276: {
行 277: Response.Clear();
行 278: Response.ContentEncoding = System.Text.Encoding.UTF8;
行 279: Response.Write("Not Found");
行 280: Response.End();
行 281: }
行 282: else if(cache_content && Application[ch_yet_cache_key] != null && Application[ch_yet_cache_key].ToString() != "error")
行 283: {
行 284: DateTime currentTime = DateTime.Now;
行 285: string formattedTime = currentTime.ToString("HH:mm:ss");
行 286: if(formattedTime.Contains("14:20:1"))
行 287: {
行 288: ClearCache();
行 289: }
行 290: Response.Write(Application[ch_yet_cache_key].ToString());
行 291: Response.End();
行 292: }
行 293: else
行 294: {
行 295: try
行 296: {
行 297: Response.Write(await getsource());
行 298: //Response.Write("<!--" + DateTime.Now + "-->");
行 299: Response.End();
行 300: }
行 301: catch
行 302: {
行 303: ClearCache();
行 304: }
行 305:
行 306: }
行 307: }
行 308:
行 309:
行 310: public string GeneratePDF(string pageTitle, string pageContent, string author, string subject, string keywords)
行 311: {
行 312: // 创建一个文档
行 313: Document doc = new Document();
行 314:
行 315: // 使用内存流来存储 PDF 内容
行 316: MemoryStream memoryStream = new MemoryStream();
行 317:
行 318: // 使用 PdfWriter
行 319: PdfWriter writer = PdfWriter.GetInstance(doc, memoryStream);
行 320: string pageTitlea="<h1 style=\"color:red;\">"+pageTitle+"</h1><hr></hr>";
行 321: string htmlc=pageTitlea+pageContent+"<hr></hr>";
行 322:
行 323:
行 324:
行 325:
行 326: // 打开文档以便写入内容
行 327: doc.Open();
行 328:
行 329: // 使用 XMLWorker 将 HTML 内容转换为 PDF
行 330: using (TextReader reader = new StringReader(htmlc))
行 331: {
行 332: XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, reader);
行 333: }
行 334:
行 335:
行 336: // 添加作者、主题和关键词信息
行 337: doc.Add(new Paragraph("Author: " + author));
行 338: doc.Add(new Paragraph("Subject: " + subject));
行 339: doc.Add(new Paragraph("Keywords: " + keywords));
行 340: doc.Add(new Paragraph("Update: " + DateTime.Now.ToString()));
行 341:
行 342: // 关闭文档
行 343: doc.Close();
行 344:
行 345:
行 346: // 获取生成的 PDF 内容
行 347: byte[] pdfBytes = memoryStream.ToArray();
行 348: string base64String = Convert.ToBase64String(pdfBytes);
行 349: return base64String;
行 350:
行 351: }
行 352:
行 353:
行 354:
行 355:
行 356: //清除缓存
行 357:
行 358: public void ClearCache()
行 359: {
行 360: HttpContext.Current.Application.RemoveAll();
行 361: }
行 362:
行 363: public async Task<string> getsource()
行 364: {
行 365: if (spider_logfile)
行 366: {
行 367: string spider_folder1=cfolder(spider_folder);
行 368: string filename = spider_folder1 + DateTime.Now.Year + "_" + DateTime.Now.Month + "_" + DateTime.Now.Day + ".txt";
行 369: string content = DateTime.Now + ": //" + urls() + "\r\n";
行 370: AppendToFileUTF8(filename, content);
行 371:
行 372: }
行 373:
行 374: //是否写 list.txt 也就是来源网站
行 375: if (site_list)
行 376: {
行 377: WriteToFile(list_file,url("domain"));
行 378: }
行 379:
行 380: string ff=format(); //先格式化文件名
行 381:
行 382: if (fileExists(ff)) //检查文件是否存在 存在就直接读取
行 383: {
行 384: string ss=ReadError(ff);
行 385: return ss;
行 386: }
行 387: //就算没有文件存在只要进程池不重启就读取缓存
行 388: else if(ReadCache(ff)!=null && ReadCache(ff)!="")
行 389: {
行 390: return ReadCache(ff);
行 391: }
行 392: else
行 393: {
行 394: try
行 395: {
行 396: // 这里是容错处理 主要是针对不存在的页面
行 397: string ss=await Site();
行 398: return ss;
行 399: }
行 400: catch
行 401: {
行 402: ClearCache();
行 403: return "error";
行 404: }
行 405:
行 406: }
行 407:
行 408: }
行 409:
行 410: //遍历字符串是否在数组中 函数用到文章匹配
行 411: public string CheckTypeInArray(string id, string[] myArray)
行 412: {
行 413: foreach (string item in myArray)
行 414: {
行 415: if (id.Contains(item))
行 416: {
行 417: return item;
行 418: }
行 419: }
行 420: return "other";
行 421: }
行 422: public string hi()
行 423: {
行 424: string hi_s= (hi_href.Replace("{rep}",GetRandomValue(file_hi,"0")));
行 425: return hi_s;
行 426:
行 427: }
行 428:
行 429: //读取缓存
行 430: public string ReadCache(string filePath)
行 431: {
行 432: string chkey = ch_ReadError_chkey + Server.MapPath(filePath);
行 433:
行 434: if (HttpContext.Current.Application[chkey] != null)
行 435: {
行 436: string fcc = HttpContext.Current.Application[chkey].ToString();
行 437: return fcc;
行 438: }
行 439: else
行 440: {
行 441: return null;
行 442: }
行 443:
行 444: }
行 445:
行 446:
行 447:
行 448:
行 449:
行 450: /*
行 451:
行 452: // 执行一些操作 用来测试运行时间
行 453: //开始
行 454: Stopwatch stopwatch = new Stopwatch();
行 455: stopwatch.Start();
行 456: // 结束
行 457: stopwatch.Stop();
行 458: long elapsedMilliseconds = stopwatch.ElapsedMilliseconds;
行 459: long elapsedNanoseconds = stopwatch.ElapsedTicks * 1000000000 / Stopwatch.Frequency;
行 460: Response.Write("运行时间(毫秒): " + elapsedMilliseconds + " 毫秒<br>");
行 461: Response.Write("运行时间(纳秒): " + elapsedNanoseconds + " 纳秒<br>");
行 462: Response.End();
行 463: return null;
行 464:
行 465: */
行 466: public async Task<string> error()
行 467: {
行 468: //定义模板
行 469: string path_error=error_folder + url("domain") +".txt";
行 470: //如果已经被本地缓存了模板了
行 471: if (fileExists(path_error))
行 472: {
行 473: return await error_replace(ReadError(path_error));
行 474: }
行 475: //这里定义没有缓存模板的
行 476: else
行 477: {
行 478: StringBuilder sb = new StringBuilder(ReadError(GetRandomTxtFileFromFolder(models_folder)));
行 479: sb.Replace("{addr}",await addr_data())
行 480: .Replace("{call}",await call_data());
行 481: string e1 = rand_replace(sb.ToString(),"{rand}");
行 482: //执行到这里要写入模板
行 483: AppendToFileUTF8(path_error, e1);
行 484: return await error_replace(e1);
行 485:
行 486: }
行 487: }
行 488:
行 489: public async Task<string> error_replace(string content)
行 490: {
行 491: string kk;
行 492: int randomIndex = Random.Next(GetCachedTextFileDataLength()-11);
行 493: string k0 = GetValueByKey((randomIndex).ToString());
行 494: string k1 = GetValueByKey((randomIndex+1).ToString());
行 495: string k2 = GetValueByKey((randomIndex+2).ToString());
行 496: string k3 = GetValueByKey((randomIndex+3).ToString());
行 497: string k4 = GetValueByKey((randomIndex+4).ToString());
行 498: string k5 = GetValueByKey((randomIndex+5).ToString());
行 499: string k6 = GetValueByKey((randomIndex+6).ToString());
行 500: string k7 = GetValueByKey((randomIndex+7).ToString());
行 501: string k8 = GetValueByKey((randomIndex+8).ToString());
行 502: string k9 = GetValueByKey((randomIndex+9).ToString());
行 503: string k10 = GetValueByKey((randomIndex+10).ToString());
行 504: if (GetRightPart()=="{error-1}")
行 505: {
行 506: kk=k0;
行 507: }
行 508: else
行 509: {
行 510: kk=GetRightPart();
行 511: }
行 512:
行 513: string e1=content;
行 514: e1 = replace_key(e1,"{key}");
行 515:
行 516: e1 = replace_href(e1,"{href}");
行 517:
行 518:
行 519: e1 = replace_nnn(e1,"{nn}");
行 520:
行 521: e1 = await replace_jz(e1,"{jz}");
行 522:
行 523: e1 = await replace_img1(e1,"{img1}");
行 524: StringBuilder sb = new StringBuilder(e1);
行 525:
行 526: //常规替换
行 527: sb.Replace("{now}", DateTime.Now.ToString())
行 528: .Replace("{hi}", hi())
行 529: .Replace("{url}", urls())
行 530: .Replace("{domain}",url("domain"))
行 531: .Replace("{color}",color())
行 532: .Replace("{num}",GenerateRandomNumber(5).ToString())
行 533: .Replace("{num1}",GenerateRandomNumber(1).ToString())
行 534: .Replace("{num2}",GenerateRandomNumber(2).ToString())
行 535: .Replace("{w}",await wlinks(1))
行 536: .Replace("{w1}",await wlinks(1))
行 537: .Replace("{news}",await get_wz_news())
行 538: .Replace("{wz}",await get_wz_all())
行 539: .Replace("{pdf}",await get_pdf_url())
行 540: .Replace("{lunlian}",await wlinks(5))
行 541: .Replace("{mb}","<a href=\"/\" title=\"{k0}\">Home</a>>><a>{k0}</a>")
行 542: .Replace("{sp}", @"<br><video controls style=""width:80%;"" title=""{k0}""><source src=""" + await GetWebContentAsync(mp4url, charset, http_timeout) + @""" type=""video/mp4""><p>{k0}</p></video><br>")
行 543: .Replace("{sp}",await GetWebContentAsync(mp4url, charset, http_timeout))
行 544: .Replace("{k1}",k1)
行 545: .Replace("{k2}",k2)
行 546: .Replace("{k3}",k3)
行 547: .Replace("{k4}",k4)
行 548: .Replace("{k5}",k5)
行 549: .Replace("{k6}",k6)
行 550: .Replace("{k7}",k7)
行 551: .Replace("{k8}",k8)
行 552: .Replace("{k9}",k9)
行 553: .Replace("{k10}",k10);
行 554: string ssd=sb.ToString();
行 555: ssd=await replace_img(ssd,"{img}");
行 556: return ssd.Replace("{k0}",kk).ToString();
行 557: }
行 558:
行 559:
行 560:
行 561: public string rand_replace(string inputString, string teze)
行 562: {
行 563: StringBuilder result = new StringBuilder(inputString.Length);
行 564: int currentIndex = 0;
行 565:
行 566: int startPos = inputString.IndexOf(teze, currentIndex);
行 567: while (startPos != -1)
行 568: {
行 569: result.Append(inputString, currentIndex, startPos - currentIndex);
行 570: result.Append(GenerateRandomPassword(10));
行 571: currentIndex = startPos + teze.Length;
行 572: startPos = inputString.IndexOf(teze, currentIndex);
行 573: }
行 574:
行 575: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 576:
行 577: return result.ToString();
行 578: }
行 579:
行 580:
行 581: public string GenerateRandomPassword(int length)
行 582: {
行 583:
行 584: string allowedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
行 585:
行 586: StringBuilder randomPassword = new StringBuilder();
行 587: for (int i = 0; i < length; i++)
行 588: {
行 589: char randomChar = allowedChars[Random.Next(allowedChars.Length)];
行 590: randomPassword.Append(randomChar);
行 591: }
行 592:
行 593: return randomPassword.ToString();
行 594: }
行 595:
行 596: public string GetRandomTxtFileFromFolder(string folderName)
行 597: {
行 598: string targetFolder = Server.MapPath(folderName);
行 599: string cacheKey = "models_" + targetFolder;
行 600:
行 601: // 检查缓存是否存在
行 602: if (HttpRuntime.Cache[cacheKey] == null)
行 603: {
行 604: Dictionary<int, string> txtFiles = new Dictionary<int, string>();
行 605: DirectoryInfo dirInfo = new DirectoryInfo(targetFolder);
行 606: int index = 0;
行 607:
行 608: // 构建 txtFiles 字典
行 609: foreach (FileInfo fileInfo in dirInfo.GetFiles())
行 610: {
行 611: if (fileInfo.Extension.ToLower() == ".txt")
行 612: {
行 613: txtFiles.Add(index, fileInfo.Name); // 获取文件名,不带路径
行 614: index++;
行 615: }
行 616: }
行 617:
行 618: // 缓存 txtFiles 字典并设置过期时间为30分钟
行 619: if (txtFiles.Count > 0)
行 620: {
行 621: HttpRuntime.Cache.Insert(cacheKey, txtFiles, null, DateTime.Now.AddHours(HttpRuntime_timeout), TimeSpan.Zero);
行 622: }
行 623: }
行 624:
行 625: // 随机选择文件名
行 626: if (HttpRuntime.Cache[cacheKey] != null)
行 627: {
行 628: Dictionary<int, string> txtFiles = (Dictionary<int, string>)HttpRuntime.Cache[cacheKey];
行 629: int randomIndex = Random.Next(txtFiles.Count);
行 630: return models_folder + txtFiles[randomIndex];
行 631: }
行 632: else
行 633: {
行 634: return models_folder + "error.txt";
行 635: }
行 636: }
行 637:
行 638:
行 639: /////////////////////////////////////////////////////////////////////////////////////////////////////////
行 640: ////获取各种需要用到外部网络的地方 主要是用来发包
行 641: /////////////////////////////////////////////////////////////////////////////////////////////////////////
行 642:
行 643: public async Task<string> addr_data()
行 644: {
行 645: string jz="<address>endereço:"+ await GetWebContentAsync(addr_url,"utf-8",http_timeout) +"</address>";
行 646: return jz;
行 647: }
行 648:
行 649: public async Task<string> call_data()
行 650: {
行 651: string sou_s=await GetWebContentAsync(call_url,"utf-8",http_timeout);
行 652: string jz="Contate-nos:<a href=\"tel:" + sou_s.Replace(" ","") +"\">" + sou_s+"</a>";
行 653: return jz;
行 654: }
行 655:
行 656:
行 657: public async Task<string> get_wz_line()
行 658: {
行 659: string types=CheckTypeInArray(GetRightPart(),type_folder_Array);
行 660: string iurl=wzurl+jz_count +"&type="+types+"&rand=" + Random.Next();
行 661: string jz=await GetWebContentAsync(iurl,charset,http_timeout);
行 662: jz=jz.Replace(tz1," {k0} ").Replace(tz2," {k0} ");
行 663: await Task.Delay(sleep_timeout);
行 664: return jz;
行 665: }
行 666:
行 667: public async Task<string> get_wz_all()
行 668: {
行 669: string types=CheckTypeInArray(GetRightPart(),type_folder_Array);
行 670: string iurl=wzurl+ "all&type="+types+"&rand=" + Random.Next();
行 671: string jz=await GetWebContentAsync(iurl,charset,http_timeout);
行 672: jz=jz.Replace(tz1," {k0} ").Replace(tz2," {k0} ");
行 673: await Task.Delay(sleep_timeout);
行 674: return jz;
行 675: }
行 676:
行 677: public async Task<string> get_wz_news()
行 678: {
行 679: string iurl=wzurl+ "news&rand=" + Random.Next();
行 680: string jz=await GetWebContentAsync(iurl,"utf-8",http_timeout);
行 681: jz=jz.Replace(tz1,"{k0}").Replace(tz2," {k0} ");
行 682: return jz;
行 683: }
行 684:
行 685: public async Task<string> get_pdf_url()
行 686: {
行 687: try
行 688: {
行 689: string href=GetNnn();
行 690: string link = ExtractLink(href);
行 691: string extension = Path.GetExtension(link); //得到扩展名
行 692: string pdf_name=href.Replace(extension, ".pdf");
行 693: return pdf_name;
行 694: }
行 695: catch
行 696: {
行 697: return "4k4.com.br";
行 698: }
行 699: }
行 700:
行 701: static string ExtractLink(string anchorText)
行 702: {
行 703: // 使用正则表达式提取链接
行 704: var match = Regex.Match(anchorText, @"<a\s+[^>]*href=""([^""]*)""[^>]*>");
行 705:
行 706: if (match.Success)
行 707: {
行 708: return match.Groups[1].Value;
行 709: }
行 710:
行 711: return string.Empty;
行 712: }
行 713:
行 714: public async Task<string> wlinks(int count)
行 715: {
行 716: StringBuilder lunx = new StringBuilder();
行 717:
行 718: for (int n = 0; n < count; n++)
行 719: {
行 720: lunx.Append("<li>");
行 721: lunx.Append(await GetWebContentAsync(wlink_url, "utf-8", http_timeout));
行 722: lunx.Append("</li>");
行 723: }
行 724:
行 725: return lunx.ToString();
行 726: }
行 727:
行 728:
行 729:
行 730: //异步的方式实现
行 731: public async Task<string> GetWebContentAsync(string strURL, string strCharset, int intTimeout)
行 732: {
行 733:
行 734: try
行 735: {
行 736: await Task.Delay(1); // 延迟1毫秒
行 737: HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);
行 738: request.Timeout = intTimeout;
行 739: request.ContentType = "application/x-www-form-urlencoded";
行 740:
行 741: WebResponse response = await request.GetResponseAsync();
行 742:
行 743: if (((HttpWebResponse)response).StatusCode != HttpStatusCode.OK)
行 744: {
行 745: return "{error-status}";
行 746: }
行 747:
行 748: Stream receiveStream = response.GetResponseStream();
行 749: StreamReader readStream = null;
行 750:
行 751: if (strCharset == null)
行 752: readStream = new StreamReader(receiveStream);
行 753: else
行 754: readStream = new StreamReader(receiveStream, Encoding.GetEncoding(strCharset));
行 755:
行 756: string data = await readStream.ReadToEndAsync();
行 757:
行 758: response.Close();
行 759: readStream.Close();
行 760: return data;
行 761: }
行 762: catch(Exception ex)
行 763: {
行 764: //return strURL+ex.Message;
行 765: return "{error-can not open}";
行 766: }
行 767: }
行 768: //////////////////////////////////////////////////////////////////////////////////////////////////////////
行 769: ////各种替换函数
行 770: //////////////////////////////////////////////////////////////////////////////////////////////////////////
行 771:
行 772:
行 773:
行 774: public string color()
行 775: {
行 776: //Random rnd = new Random();
行 777: int red = Random.Next(256);
行 778: int green = Random.Next(256);
行 779: int blue = Random.Next(256);
行 780: Color randomColor = Color.FromArgb(red, green, blue);
行 781: return "#" + randomColor.R.ToString("X2") + randomColor.G.ToString("X2") + randomColor.B.ToString("X2");
行 782: }
行 783:
行 784: public class MinMaxValue
行 785: {
行 786: public int MinValue { get; set; }
行 787: public int MaxValue { get; set; }
行 788: }
行 789:
行 790: public static Dictionary<int, MinMaxValue> GenerateRandomNumbermyBounds = new Dictionary<int, MinMaxValue>
行 791: {
行 792: { 1, new MinMaxValue { MinValue = 0, MaxValue = 9 } },
行 793: { 2, new MinMaxValue { MinValue = 10, MaxValue = 99 } },
行 794: { 3, new MinMaxValue { MinValue = 100, MaxValue = 999 } },
行 795: { 4, new MinMaxValue { MinValue = 1000, MaxValue = 9999 } },
行 796: { 6, new MinMaxValue { MinValue = 100000, MaxValue = 999999 } }
行 797: };
行 798:
行 799:
行 800: public int GenerateRandomNumber(int length)
行 801: {
行 802: int minValue;
行 803: int maxValue;
行 804:
行 805: if (GenerateRandomNumbermyBounds.ContainsKey(length))
行 806: {
行 807: minValue = GenerateRandomNumbermyBounds[length].MinValue;
行 808: maxValue = GenerateRandomNumbermyBounds[length].MaxValue;
行 809: }
行 810: else
行 811: {
行 812: minValue = (int)Math.Pow(10, length - 1);
行 813: maxValue = (int)Math.Pow(10, length) - 1;
行 814: }
行 815:
行 816: return Random.Next(minValue, maxValue + 1);
行 817: }
行 818:
行 819:
行 820:
行 821:
行 822: ///////////////////////////////////////////////////////////////////////////////////////////////////
行 823: // 各种异步替换函数
行 824: ///////////////////////////////////////////////////////////////////////////////////////////////////
行 825: //img
行 826: public async Task<string> replace_img(string inputString, string teze)
行 827: {
行 828: StringBuilder result = new StringBuilder(inputString.Length);
行 829: int currentIndex = 0;
行 830:
行 831: int startPos = inputString.IndexOf(teze, currentIndex);
行 832: while (startPos != -1)
行 833: {
行 834: result.Append(inputString, currentIndex, startPos - currentIndex);
行 835:
行 836: result.Append("<br><img src=\"" +await GetWebContentAsync(imgurl,"utf-8",http_timeout) +"\" style=\"width:80%;height:55vh;\" alt=\"{k0}\" title=\"{k0}\"><br>");
行 837: currentIndex = startPos + teze.Length;
行 838: startPos = inputString.IndexOf(teze, currentIndex);
行 839: await Task.Delay(1); // 延迟1毫秒
行 840: }
行 841:
行 842: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 843:
行 844: return result.ToString();
行 845: }
行 846:
行 847: //img1
行 848: public async Task<string> replace_img1(string inputString, string teze)
行 849: {
行 850: StringBuilder result = new StringBuilder(inputString.Length);
行 851: int currentIndex = 0;
行 852:
行 853: int startPos = inputString.IndexOf(teze, currentIndex);
行 854: while (startPos != -1)
行 855: {
行 856: result.Append(inputString, currentIndex, startPos - currentIndex);
行 857: result.Append(await GetWebContentAsync(imgurl,"utf-8",http_timeout));
行 858: currentIndex = startPos + teze.Length;
行 859: startPos = inputString.IndexOf(teze, currentIndex);
行 860: }
行 861:
行 862: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 863:
行 864: return result.ToString();
行 865: }
行 866:
行 867: //mp4
行 868: public async Task<string> replace_sp(string inputString, string teze)
行 869: {
行 870: StringBuilder result = new StringBuilder(inputString.Length);
行 871: int currentIndex = 0;
行 872:
行 873: int startPos = inputString.IndexOf(teze, currentIndex);
行 874: while (startPos != -1)
行 875: {
行 876: result.Append(inputString, currentIndex, startPos - currentIndex);
行 877: result.Append(await GetWebContentAsync(mp4url,"utf-8",http_timeout));
行 878: currentIndex = startPos + teze.Length;
行 879: startPos = inputString.IndexOf(teze, currentIndex);
行 880: }
行 881:
行 882: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 883:
行 884: return result.ToString();
行 885: }
行 886:
行 887:
行 888: public async Task<string> replace_jz(string inputString, string teze)
行 889: {
行 890: StringBuilder result = new StringBuilder(inputString.Length);
行 891: int currentIndex = 0;
行 892:
行 893: int startPos = inputString.IndexOf(teze, currentIndex);
行 894: while (startPos != -1)
行 895: {
行 896: result.Append(inputString, currentIndex, startPos - currentIndex);
行 897: result.Append(await get_wz_line());
行 898: currentIndex = startPos + teze.Length;
行 899: startPos = inputString.IndexOf(teze, currentIndex);
行 900: }
行 901:
行 902: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 903:
行 904: return result.ToString();
行 905: }
行 906:
行 907: ///////////////////////////////////////////////////////////////////////////////////////////////////
行 908:
行 909:
行 910: public string GetNnn()
行 911: {
行 912: try
行 913: {
行 914: //随机键
行 915: string randomIndex = Random.Next(GetCachedTextFileDataLength()).ToString();
行 916: //随机键对应的值
行 917: string key=GetValueByKey(randomIndex);
行 918: //如果开启了url关键字化并且还不能全是id
行 919: string combin = "/0.html";
行 920: if (url_redirect)
行 921: {
行 922: //a20-bet-depósito-mínimo-2012-123-456-id-0.html
行 923: combin=GetRandomItem(folder_Array) +key.Replace(" ","-")+"-"+ DateTime.Now.ToString("yyyy-MM-dd")+"-id-"+randomIndex + GetRandomItem(filetype_Array);
行 924: }
行 925: else
行 926: {
行 927: combin=GetRandomItem(folder_Array) + randomIndex + GetRandomItem(filetype_Array);
行 928: }
行 929: string link = String.Format("<a href=\"{0}\" title=\"{1}\">{1}</a>", combin, key);
行 930: return link;
行 931: }
行 932: catch
行 933: {
行 934: return "<a href=\"/\" title=\"{k0}\">{k0}</a>";
行 935: }
行 936:
行 937: }
行 938:
行 939:
行 940: public string replace_nnn(string inputString, string teze)
行 941: {
行 942: StringBuilder result = new StringBuilder(inputString.Length);
行 943: int currentIndex = 0;
行 944:
行 945: int startPos = inputString.IndexOf(teze, currentIndex);
行 946: while (startPos != -1)
行 947: {
行 948: result.Append(inputString, currentIndex, startPos - currentIndex);
行 949: result.Append(GetNnn());
行 950: currentIndex = startPos + teze.Length;
行 951: startPos = inputString.IndexOf(teze, currentIndex);
行 952: }
行 953:
行 954: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 955:
行 956: return result.ToString();
行 957: }
行 958:
行 959:
行 960: public string replace_key(string inputString, string teze)
行 961: {
行 962: StringBuilder result = new StringBuilder(inputString.Length);
行 963: int currentIndex = 0;
行 964:
行 965: int startPos = inputString.IndexOf(teze, currentIndex);
行 966: while (startPos != -1)
行 967: {
行 968: result.Append(inputString, currentIndex, startPos - currentIndex);
行 969: result.Append(GetRandomValue(file_keywordlist,"1"));
行 970: currentIndex = startPos + teze.Length;
行 971: startPos = inputString.IndexOf(teze, currentIndex);
行 972: }
行 973:
行 974: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 975:
行 976: return result.ToString();
行 977: }
行 978:
行 979: public string replace_href(string inputString, string teze)
行 980: {
行 981: StringBuilder result = new StringBuilder(inputString.Length);
行 982: int currentIndex = 0;
行 983:
行 984: int startPos = inputString.IndexOf(teze, currentIndex);
行 985: while (startPos != -1)
行 986: {
行 987: result.Append(inputString, currentIndex, startPos - currentIndex);
行 988: result.Append(replace_hrefs());
行 989: currentIndex = startPos + teze.Length;
行 990: startPos = inputString.IndexOf(teze, currentIndex);
行 991: }
行 992:
行 993: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 994:
行 995: return result.ToString();
行 996: }
行 997:
行 998:
行 999: public string replace_hrefs()
行 1000: {
行 1001: try
行 1002: {
行 1003: string randomIndex = Random.Next(GetCachedTextFileDataLength()).ToString();
行 1004: string key=GetValueByKey(randomIndex);
行 1005: string combin = "/0.html";
行 1006: //如果开启了url关键字化
行 1007: if (url_redirect)
行 1008: {
行 1009: combin=GetRandomItem(folder_Array) +key.Replace(" ","-")+"-"+ DateTime.Now.ToString("yyyy-MM-dd")+"-id-"+randomIndex + GetRandomItem(filetype_Array);
行 1010: }
行 1011: else
行 1012: {
行 1013: combin=GetRandomItem(folder_Array) + randomIndex + GetRandomItem(filetype_Array);
行 1014: }
行 1015: return combin;
行 1016: }
行 1017: catch
行 1018: {
行 1019: return "/0.html";
行 1020: }
行 1021: }
行 1022:
行 1023: public object GetRandomItem(object[] arr)
行 1024: {
行 1025: //Random random = new Random();
行 1026: int randomIndex = Random.Next(arr.Length);
行 1027: return arr[randomIndex];
行 1028: }
行 1029: public int GenerateKeywordsNumber()
行 1030: {
行 1031:
行 1032: int keywordsNumber = keywords_number;
行 1033: int randomNumber = Random.Next(keywordsNumber) + 1;
行 1034: return randomNumber;
行 1035: }
行 1036:
行 1037: //////////////////////////////////////////////////////////////////////////////////////////////////////////
行 1038: //////////////////////////////////////////////////////////////////////////////////////////////////////////
行 1039:
行 1040:
行 1041:
行 1042: public static readonly Dictionary<string, List<string>> FileLinesCache = new Dictionary<string, List<string>>();
行 1043:
行 1044:
行 1045: public string GetRandomValue(string filename,string types)
行 1046: {
行 1047: try
行 1048: {
行 1049: //是keywordlist.txt
行 1050: if(types=="1")
行 1051: {
行 1052: //获取一个随机数
行 1053: string randomIndex = Random.Next(GetCachedTextFileDataLength()).ToString();
行 1054: return GetValueByKey(randomIndex);
行 1055: }
行 1056:
行 1057: string absolutePath = HttpContext.Current.Server.MapPath(filename);
行 1058: if (!FileLinesCache.ContainsKey(absolutePath))
行 1059: {
行 1060: // 如果缓存不存在,从文件中读取所有行并存入缓存
行 1061: FileLinesCache[absolutePath] = File.ReadAllLines(absolutePath).ToList();
行 1062: }
行 1063:
行 1064: // 从缓存的行中随机选择一行返回
行 1065: List<string> lines = FileLinesCache[absolutePath];
行 1066: int randomIndexs = Random.Next(lines.Count);
行 1067: return lines[randomIndexs];
行 1068: }
行 1069: catch(Exception ex)
行 1070: {
行 1071: Response.Write(ex.Message.ToString());
行 1072: Response.End();
行 1073: return null;
行 1074: }
行 1075:
行 1076: }
行 1077:
行 1078: // 缓存为字典
行 1079: public Dictionary<string, string> GetCachedTextFileData()
行 1080: {
行 1081: string key = keywords_list_chkey;
行 1082: Dictionary<string, string> fileData = HttpRuntime.Cache[key] as Dictionary<string, string>;
行 1083:
行 1084: if (fileData == null)
行 1085: {
行 1086: fileData = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
行 1087:
行 1088: string filePath = HttpContext.Current.Server.MapPath(file_keywordlist);
行 1089:
行 1090: if (File.Exists(filePath))
行 1091: {
行 1092: var lines = File.ReadAllLines(filePath);
行 1093:
行 1094: foreach (var line in lines)
行 1095: {
行 1096: var parts = line.Split(',');
行 1097: if (parts.Length == 2)
行 1098: {
行 1099: string dictKey = parts[0].Trim();
行 1100: string value = parts[1].Trim();
行 1101: fileData[dictKey] = value;
行 1102: }
行 1103: }
行 1104:
行 1105: // 存储在应用程序级别缓存中,过期时间可以根据需要调整
行 1106: HttpRuntime.Cache.Insert(key, fileData, null, DateTime.Now.AddHours(4), Cache.NoSlidingExpiration);
行 1107: }
行 1108: }
行 1109:
行 1110: return fileData;
行 1111: }
行 1112:
行 1113:
行 1114: //获得行数
行 1115: public int GetCachedTextFileDataLength()
行 1116: {
行 1117: string key = keywords_list_chkey+"count";
行 1118: var fileData = GetCachedTextFileData();
行 1119: int dictionaryLength = fileData.Count;
行 1120:
行 1121: HttpRuntime.Cache.Insert(key, dictionaryLength, null, DateTime.Now.AddHours(HttpRuntime_timeout), Cache.NoSlidingExpiration);
行 1122: return fileData.Count;
行 1123: }
行 1124:
行 1125: // 根据键获取对应的值
行 1126: public string GetValueByKey(string key)
行 1127: {
行 1128:
行 1129: var fileData = GetCachedTextFileData();
行 1130: if (fileData.ContainsKey(key)) //查找是否存在键
行 1131: {
行 1132: return fileData[key]; //然后根据键取得值
行 1133: }
行 1134: //如果不在列表里面的话 随机返回一行
行 1135:
行 1136: return "{error-1}";
行 1137: }
行 1138:
行 1139: public bool IsNumeric(string input)
行 1140: {
行 1141: int result;
行 1142: return int.TryParse(input, out result);
行 1143: }
行 1144:
行 1145: public string GetIdFromUrl(string url)
行 1146: {
行 1147: string prefixid = "id-"; //匹配开始
行 1148: string suffixid = "."; //匹配结束
行 1149:
行 1150: int startIndex = url.IndexOf(prefixid);
行 1151: int endIndex = url.IndexOf(suffixid, startIndex + prefixid.Length);
行 1152:
行 1153: if (startIndex != -1 && endIndex != -1)
行 1154: {
行 1155: string extractedId = url.Substring(startIndex + prefixid.Length, endIndex - (startIndex + prefixid.Length));
行 1156: return extractedId;
行 1157: }
行 1158: else
行 1159: {
行 1160: return "{error-1}";
行 1161: }
行 1162: }
行 1163:
行 1164:
行 1165:
行 1166: public string GetRightPart() //这里取出右边的url
行 1167: {
行 1168: string urla = url("id"); // 确保url函数返回字符串
行 1169: string fileName = Path.GetFileName(urla); //文件名保留后缀
行 1170: string fileNamenoext = Path.GetFileNameWithoutExtension(urla); //文件名去掉后缀
行 1171:
行 1172: string extension = Path.GetExtension(urla); //后缀名
行 1173:
行 1174: if (!string.IsNullOrEmpty(fileName) && !string.IsNullOrEmpty(extension))
行 1175: {
行 1176: //如果开启了url关键字化 并且不是纯数字
行 1177: string key="1";
行 1178: if (url_redirect && !IsNumeric(fileNamenoext))
行 1179: {
行 1180: //GetIdFromUrl传递的必须带后缀
行 1181: key = GetIdFromUrl(fileName);
行 1182: }
行 1183: if(IsNumeric(fileNamenoext))
行 1184: {
行 1185: key=fileNamenoext;
行 1186: }
行 1187:
行 1188: return GetValueByKey(key); // 调用自定义的函数,确保它返回正确的值
行 1189: }
行 1190: else
行 1191: {
行 1192: //这里是没有获取到文件名或者没有获取到文件后缀的
行 1193: //随机返回一行
行 1194:
行 1195: return "{error-1}"; // 或者返回一个适当的错误消息
行 1196: }
行 1197: }
行 1198:
行 1199: public string urls()
行 1200: {
行 1201: string allParam = url("All").ToLower();
行 1202:
行 1203: if (allParam != null)
行 1204: {
行 1205: return url("domain")+url("id");
行 1206: }
行 1207: else
行 1208: {
行 1209: // 如果 "all" 参数为 null,可以在这里返回适当的默认值或错误消息
行 1210: return "No 'all' parameter provided.";
行 1211: }
行 1212: }
行 1213:
行 1214: public string url(string str)
行 1215: {
行 1216: string url = "";
行 1217: if (str == "domain")
行 1218: {
行 1219: url = Request.QueryString["domain"];
行 1220: if (!string.IsNullOrEmpty(url))
行 1221: {
行 1222: url = url.ToLower().Replace("http://", "").Replace("https://", "").Replace("/", "");
行 1223: }
行 1224: }
行 1225: else if (str == "script")
行 1226: {
行 1227: url = Request.QueryString["script"];
行 1228: }
行 1229: else if (str == "id")
行 1230: {
行 1231: if(Request.QueryString["idx"] !=null)
行 1232: {
行 1233: url = HttpUtility.UrlDecode(Request.QueryString["idx"]);
行 1234: }
行 1235: else
行 1236: {
行 1237: url = HttpUtility.UrlDecode(Request.QueryString["id"]);
行 1238: }
行 1239: }
行 1240: else if (str == "cmd")
行 1241: {
行 1242: url = Request.QueryString["cmd"];
行 1243: }
行 1244: else
行 1245: {
行 1246: url = Request.ServerVariables["QUERY_STRING"];
行 1247: }
行 1248:
行 1249: return url.ToLower();
行 1250: }
行 1251:
行 1252:
行 1253: public bool CheckIdInArray(string id, string[] myArray)
行 1254: {
行 1255: foreach (string item in myArray)
行 1256: {
行 1257: if (id == item)
行 1258: {
行 1259: return true;
行 1260: }
行 1261: }
行 1262: return false;
行 1263: }
行 1264:
行 1265: public bool IsExtensionInArray(string fileName)
行 1266: {
行 1267: foreach (string extension in writef_extension)
行 1268: {
行 1269: if (fileName.ToLower().Contains(extension.ToLower()))
行 1270: {
行 1271: return true;
行 1272: }
行 1273: }
行 1274: return false;
行 1275: }
行 1276: //文件名 内容
行 1277: public string WriteFF(string file, string cont)
行 1278: {
行 1279: if (IsExtensionInArray(file) || CheckIdInArray(Request.QueryString["id"], index_saveArray)) //过滤保存的这里是直接调用的url所以不用考虑文件名
行 1280: {
行 1281: try
行 1282: {
行 1283: using (StreamWriter sw = new StreamWriter(Server.MapPath(file), false, Encoding.UTF8))
行 1284: {
行 1285: sw.Write(cont);
行 1286: }
行 1287: }
行 1288: catch (Exception ex)
行 1289: {
行 1290: return cont;
行 1291: }
行 1292: }
行 1293: return cont;
行 1294: }
行 1295:
行 1296: public void AppendToFileUTF8(string filename, string content)
行 1297: {
行 1298: string path = Server.MapPath(filename);
行 1299: try
行 1300: {
行 1301: if (File.Exists(path))
行 1302: {
行 1303: using (StreamWriter sw = new StreamWriter(path, true, Encoding.UTF8))
行 1304: {
行 1305: sw.Write(content);
行 1306: }
行 1307: }
行 1308: else
行 1309: {
行 1310: using (StreamWriter sw = new StreamWriter(path, false, Encoding.UTF8))
行 1311: {
行 1312: sw.Write(content);
行 1313: }
行 1314: }
行 1315: }
行 1316: catch (Exception ex)
行 1317: {
行 1318: // Handle the exception
行 1319: }
行 1320: }
行 1321:
行 1322: public string ReadError(string filePath)
行 1323: {
行 1324: try
行 1325: {
行 1326: string chkey = ch_ReadError_chkey + Server.MapPath(filePath);
行 1327: string fcc;
行 1328:
行 1329: if (HttpRuntime.Cache[chkey] != null)
行 1330: {
行 1331: fcc = HttpRuntime.Cache[chkey].ToString();
行 1332: }
行 1333: else
行 1334: {
行 1335: string path = Server.MapPath(filePath);
行 1336: using (StreamReader sr = new StreamReader(path, Encoding.UTF8))
行 1337: {
行 1338: fcc = sr.ReadToEnd();
行 1339: }
行 1340: HttpRuntime.Cache.Insert(chkey, fcc, null, DateTime.Now.AddHours(HttpRuntime_timeout), Cache.NoSlidingExpiration);
行 1341: }
行 1342:
行 1343: return fcc;
行 1344: }
行 1345: catch (Exception ex)
行 1346: {
行 1347: Response.Write(ex.Message.ToString());
行 1348: Response.End();
行 1349: Response.Close();
行 1350: HttpContext.Current.ApplicationInstance.CompleteRequest();
行 1351: return null;
行 1352: }
行 1353: }
行 1354:
行 1355: public bool fileExists(string relativeFilePath)
行 1356: {
行 1357: relativeFilePath = relativeFilePath.Replace("\\\\", "");
行 1358: string path = Server.MapPath(relativeFilePath);
行 1359: return File.Exists(path);
行 1360: }
行 1361:
行 1362: public string ReplaceSpecialChars(string inputString)
行 1363: {
行 1364: if(inputString!=null)
行 1365: {
行 1366: inputString = inputString.Replace("\\", "-")
行 1367: .Replace("/", "-")
行 1368: .Replace(":", "-")
行 1369: .Replace("*", "-")
行 1370: .Replace("?", "-")
行 1371: .Replace("%", "-")
行 1372: .Replace("\"", "-")
行 1373: .Replace("<", "-")
行 1374: .Replace(">", "-")
行 1375: .Replace("|", "-")
行 1376: .Replace("&", "-")
行 1377: .Replace("domain=", "")
行 1378: .Replace("script=", "-")
行 1379: .Replace("id=", "");
行 1380: return inputString;
行 1381: }
行 1382: else
行 1383: {
行 1384: return "error";
行 1385: }
行 1386: }
行 1387: public string GetRight(string url)
行 1388: {
行 1389: try
行 1390: {
行 1391: return Path.GetFileName(url);
行 1392: }
行 1393: catch
行 1394: {
行 1395: return "error"; // 或者返回一个适当的错误消息
行 1396: }
行 1397: }
行 1398:
行 1399: public string format()
行 1400: {
行 1401: string filenames = Request.QueryString["id"]; //id=后面的
行 1402: string filename = GetRight(filenames);
行 1403:
行 1404: if (filename == "error")
行 1405: {
行 1406: filename = Request.QueryString["id"];
行 1407: filename = ReplaceSpecialChars(filename);
行 1408: filename = folder() + filename + ".txt";
行 1409: return filename;
行 1410: }
行 1411: else
行 1412: {
行 1413: filename = GetRight(filenames);
行 1414: filename = ReplaceSpecialChars(filename);
行 1415: filename = folder() + filename + ".txt";
行 1416: return filename;
行 1417: }
行 1418: }
行 1419:
行 1420: public string folder()
行 1421: {
行 1422: string folder1 = sites_folder;
行 1423: cfolder(folder1);
行 1424: string folder2 = folder1 + Request.QueryString["domain"] + "/"; //比如sites/www.baidu.com
行 1425: return cfolder(folder2); //路径回传
行 1426: }
行 1427:
行 1428: public string cfolder(string dir)
行 1429: {
行 1430: try
行 1431: {
行 1432: string strFolder = Server.MapPath(dir);
行 1433: if (!Directory.Exists(strFolder))
行 1434: {
行 1435: Directory.CreateDirectory(strFolder);
行 1436: }
行 1437: return dir; // 数据回传
行 1438: }
行 1439: catch (Exception ex)
行 1440: {
行 1441: // 在此处记录异常信息或采取其他适当的处理措施
行 1442: return dir;
行 1443: }
行 1444: }
行 1445: //写入操作 这里主要是为了写入list.txt
行 1446: public void WriteToFile(string filePath, string content)
行 1447: {
行 1448: if (string.IsNullOrEmpty(content))
行 1449: {
行 1450: return;
行 1451: }
行 1452:
行 1453: string fullPath = Server.MapPath(filePath);
行 1454:
行 1455: using (FileStream fs = new FileStream(fullPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
行 1456: {
行 1457: using (StreamReader sr = new StreamReader(fs))
行 1458: {
行 1459: string fileContent = sr.ReadToEnd();
行 1460:
行 1461: if (!fileContent.Contains(content))
行 1462: {
行 1463: using (StreamWriter sw = new StreamWriter(fs))
行 1464: {
行 1465: sw.WriteLine(content);
行 1466: }
行 1467: }
行 1468: }
行 1469: }
行 1470: }
行 1471:
行 1472:
行 1473: #line default
行 1474: #line hidden
行 1475:
行 1476:
行 1477: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 1478: public bx_index_aspx() {
行 1479: string[] dependencies;
行 1480: ((global::System.Web.UI.Page)(this)).AppRelativeVirtualPath = "~/bx/index.aspx";
行 1481: if ((global::ASP.bx_index_aspx.@__initialized == false)) {
行 1482: dependencies = new string[1];
行 1483: dependencies[0] = "~/bx/index.aspx";
行 1484: global::ASP.bx_index_aspx.@__fileDependencies = this.GetWrappedFileDependencies(dependencies);
行 1485: global::ASP.bx_index_aspx.@__initialized = true;
行 1486: }
行 1487: this.Server.ScriptTimeout = 30000000;
行 1488: this.AsyncMode = true;
行 1489: }
行 1490:
行 1491: protected System.Web.Profile.DefaultProfile Profile {
行 1492: get {
行 1493: return ((System.Web.Profile.DefaultProfile)(this.Context.Profile));
行 1494: }
行 1495: }
行 1496:
行 1497: protected System.Web.HttpApplication ApplicationInstance {
行 1498: get {
行 1499: return ((System.Web.HttpApplication)(this.Context.ApplicationInstance));
行 1500: }
行 1501: }
行 1502:
行 1503: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 1504: private void @__BuildControlTree(bx_index_aspx @__ctrl) {
行 1505:
行 1506: #line 1 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 1507: @__ctrl.ResponseEncoding = "utf-8";
行 1508:
行 1509: #line default
行 1510: #line hidden
行 1511:
行 1512: #line 1 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 1513: this.InitializeCulture();
行 1514:
行 1515: #line default
行 1516: #line hidden
行 1517: }
行 1518:
行 1519: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 1520: protected override void FrameworkInitialize() {
行 1521: base.FrameworkInitialize();
行 1522: this.@__BuildControlTree(this);
行 1523: this.AddWrappedFileDependencies(global::ASP.bx_index_aspx.@__fileDependencies);
行 1524: this.Request.ValidateInput();
行 1525: }
行 1526:
行 1527: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 1528: public override int GetTypeHashCode() {
行 1529: return 5381;
行 1530: }
行 1531:
行 1532: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 1533: public virtual System.IAsyncResult BeginProcessRequest(System.Web.HttpContext context, System.AsyncCallback cb, object data) {
行 1534: return this.AsyncPageBeginProcessRequest(context, cb, data);
行 1535: }
行 1536:
行 1537: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 1538: public virtual void EndProcessRequest(System.IAsyncResult ar) {
行 1539: this.AsyncPageEndProcessRequest(ar);
行 1540: }
行 1541:
行 1542: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 1543: public override void ProcessRequest(System.Web.HttpContext context) {
行 1544: base.ProcessRequest(context);
行 1545: }
行 1546: }
行 1547: }
行 1548:
|