行 1: #pragma checksum "d:\wwwroot\spider.wskmn.com\bx\index.aspx" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "6E046BFA25836E2D00F6D74F09E6A91FB61070B7"
行 2: //------------------------------------------------------------------------------
行 3: // <auto-generated>
行 4: // 此代码由工具生成。
行 5: // 运行时版本:4.0.30319.42000
行 6: //
行 7: // 对此文件的更改可能会导致不正确的行为,并且如果
行 8: // 重新生成代码,这些更改将会丢失。
行 9: // </auto-generated>
行 10: //------------------------------------------------------------------------------
行 11:
行 12: namespace ASP {
行 13:
行 14: #line 396 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config"
行 15: using System.Web.Security;
行 16:
行 17: #line default
行 18: #line hidden
行 19:
行 20: #line 401 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config"
行 21: using System.Web.UI.HtmlControls;
行 22:
行 23: #line default
行 24: #line hidden
行 25:
行 26: #line 395 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config"
行 27: using System.Web.SessionState;
行 28:
行 29: #line default
行 30: #line hidden
行 31:
行 32: #line 4 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 33: using System.Threading.Tasks;
行 34:
行 35: #line default
行 36: #line hidden
行 37:
行 38: #line 402 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config"
行 39: using System.Xml.Linq;
行 40:
行 41: #line default
行 42: #line hidden
行 43:
行 44: #line 386 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config"
行 45: using System.Collections.Specialized;
行 46:
行 47: #line default
行 48: #line hidden
行 49:
行 50: #line 9 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 51: using iTextSharp.text;
行 52:
行 53: #line default
行 54: #line hidden
行 55:
行 56: #line 3 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 57: using System.Text;
行 58:
行 59: #line default
行 60: #line hidden
行 61:
行 62: #line 389 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config"
行 63: using System.Linq;
行 64:
行 65: #line default
行 66: #line hidden
行 67:
行 68: #line 7 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 69: using System.Diagnostics;
行 70:
行 71: #line default
行 72: #line hidden
行 73:
行 74: #line 10 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 75: using iTextSharp.text.pdf;
行 76:
行 77: #line default
行 78: #line hidden
行 79:
行 80: #line 399 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config"
行 81: using System.Web.UI.WebControls;
行 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 384 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config"
行 93: using System.Collections;
行 94:
行 95: #line default
行 96: #line hidden
行 97:
行 98: #line 392 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config"
行 99: using System.Web;
行 100:
行 101: #line default
行 102: #line hidden
行 103:
行 104: #line 400 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config"
行 105: using System.Web.UI.WebControls.WebParts;
行 106:
行 107: #line default
行 108: #line hidden
行 109:
行 110: #line 12 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 111: using System.IO.Compression;
行 112:
行 113: #line default
行 114: #line hidden
行 115:
行 116: #line 388 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config"
行 117: using System.Configuration;
行 118:
行 119: #line default
行 120: #line hidden
行 121:
行 122: #line 6 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 123: using System.Drawing;
行 124:
行 125: #line default
行 126: #line hidden
行 127:
行 128: #line 383 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config"
行 129: using System;
行 130:
行 131: #line default
行 132: #line hidden
行 133:
行 134: #line 385 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config"
行 135: using System.Collections.Generic;
行 136:
行 137: #line default
行 138: #line hidden
行 139:
行 140: #line 393 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config"
行 141: using System.Web.Caching;
行 142:
行 143: #line default
行 144: #line hidden
行 145:
行 146: #line 398 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config"
行 147: using System.Web.UI;
行 148:
行 149: #line default
行 150: #line hidden
行 151:
行 152: #line 5 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 153: using System.Net;
行 154:
行 155: #line default
行 156: #line hidden
行 157:
行 158: #line 387 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config"
行 159: using System.ComponentModel.DataAnnotations;
行 160:
行 161: #line default
行 162: #line hidden
行 163:
行 164: #line 394 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config"
行 165: using System.Web.DynamicData;
行 166:
行 167: #line default
行 168: #line hidden
行 169:
行 170: #line 391 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config"
行 171: using System.Text.RegularExpressions;
行 172:
行 173: #line default
行 174: #line hidden
行 175:
行 176: #line 397 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config"
行 177: using System.Web.Profile;
行 178:
行 179: #line default
行 180: #line hidden
行 181:
行 182: #line 11 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 183: using iTextSharp.tool.xml;
行 184:
行 185: #line default
行 186: #line hidden
行 187:
行 188:
行 189: [System.Runtime.CompilerServices.CompilerGlobalScopeAttribute()]
行 190: public class bx_index_aspx : global::System.Web.UI.Page, System.Web.SessionState.IRequiresSessionState, System.Web.IHttpAsyncHandler, System.Web.IHttpHandler {
行 191:
行 192: private static bool @__initialized;
行 193:
行 194: private static object @__fileDependencies;
行 195:
行 196:
行 197: #line 14 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 198:
行 199: public string wzurl = "http://wz4.wskmn.com/?cmd="; // 定义远程获取文章
行 200: //public string wlink_url = "http://link.wskmn.com/bx1/?count=0"; // 定义远程外链
行 201: public string wlink_url = "http://link.wskmn.com/bx1/?br=0"; // 定义远程外链 //*****************
行 202: public string fuci_url = "http://link.wskmn.com/bx1/?fuci=0";
行 203:
行 204: public string imgurl = "http://img.wskmn.com/img/?cmd=img";
行 205: public string mp4url = "http://img.wskmn.com/img/?cmd=mp4";
行 206: public string call_url = "http://img.wskmn.com/img/?cmd=call";
行 207: public string addr_url = "http://img.wskmn.com/img/?cmd=addr";
行 208:
行 209: public string models_folder = "model\\"; // 全局配置模板文件夹
行 210: public string error_folder = "models\\"; // 配置全局保存网站模板的文件夹
行 211: public string spider_folder = "spider\\"; // 配置保存蜘蛛的日志文件夹
行 212: public string keywords_file = "keywords.txt"; // 配置关键字文件名 这里的关键字最好按照名称排列不论是降序还是升序
行 213: public string tz1 = " sua "; // 替换特征
行 214: public string tz2 = " sua ";
行 215:
行 216: //应用级缓存前缀
行 217: public const string keywords_list_chkey = "spider5_keywords_list_chkey_";
行 218: public string ch_ReadError_chkey = "spider5_subdomain_spider_ReadError_";
行 219: public string ch_yet_cache = "spider5_yet_cache_"; //缓存处理过的
行 220: public string ch_ReadByte_chkey = "spider5_ReadByte_";
行 221:
行 222: public bool cache_content = true;
行 223:
行 224:
行 225:
行 226:
行 227: public string[] folder_Array = { "/app/","/mobile/","/","/","/","/","/news/", "/artigo/", "/publicar/" }; // 长度为3
行 228: public string[] filetype_Array = { ".htm",".html",".shtml",".pdf"}; // 长度为3
行 229: public string[] index_saveArray = { "/", "", "/index.html", "/index.php", "/index.asp", "/index.htm" }; // 保存首页
行 230:
行 231: public string sites_folder = "sites\\"; //缓存文件夹
行 232:
行 233: public string[] writef_extension = { ".pdf","htm" }; // 要在硬盘上保留的缓存后缀 如果不想保存就写一个没有的格式比如.unknow
行 234:
行 235: public int http_timeout = 3000;
行 236: //日志
行 237: public bool spider_logfile = false; //true为开启 false为关闭
行 238: public bool url_redirect = true; //对url进行关键字重写 比如 1对应key1 那么就重写为 key1-key1-2023-11-19-id.后缀名
行 239:
行 240: public string charset = "utf-8"; //定义编码格式
行 241: //2024-1-7
行 242:
行 243:
行 244: public string file_keywordlist = "keywordlist.txt";
行 245: //google结构化文件
行 246: public string serp_file="serp.txt";
行 247:
行 248:
行 249:
行 250: public bool site_list = true; //记录来源网站 true为开启 false为关闭
行 251: public string list_file = "list/list.txt"; //来源
行 252: public static readonly Random Random = new Random((int)Stopwatch.GetTimestamp()); //全局随机数
行 253: public int sleep_timeout = 1; //避免速度太快增加一个延时 默认演示1ms
行 254: public string file_hi = "hi.txt"; //关键字列表
行 255: public string hi_href ="<p><strong><font color=\"#FF0000\">{k0}:{rep}</font></strong></p>";
行 256: public string jz_count = "5";
行 257: public string h1_file="h1.txt"; //h1
行 258: public string sitemap_file="sitemap.txt"; //sitemap模板
行 259: //缓存清理时间
行 260: public int HttpRuntime_timeout=6;
行 261:
行 262: public string[] type_folder_Array = {
行 263: "2bet","7game","arbet","bet3","bac",
行 264: "bet7","beta","betb","bete","betm",
行 265: "betn","betpix","betsp","betsu","bull",
行 266: "braz","casa","cbet","estrela","f1",
行 267: "faz","freeb","galer","lamp","luva",
行 268: "nov","onab","pagb","pixb","jack",
行 269: "rea","xbet","esport","sport","win",
行 270: "apost","baixar","blaze","bingo","bonus",
行 271: "caça","roleta","roulet","cassino","palpite",
行 272: "poke","loto","loteria","mega","ganha",
行 273: "grátis","asino","slot","bet","caixa",
行 274: "jog","futebol","36","2024","deposit"
行 275: };
行 276:
行 277: //姓名
行 278: public string[] surnames = {
行 279: "Silva", "Santos", "Oliveira", "Pereira", "Costa", "Rodrigues", "Martins", "Ferreira", "Alves", "Gomes",
行 280: "Lima", "Araújo", "Carvalho", "Ribeiro", "Reis", "Melo", "Nascimento", "Barbosa", "Teixeira", "Correia",
行 281: "Cardoso", "Dias", "Fernandes", "Cavalcanti", "Mendes", "Monteiro", "Castro", "Moura", "Pinto", "Dantas",
行 282: "Leal", "Batista", "Campos", "Guimarães", "Moreira", "Bezerra", "Siqueira", "Marques", "Cunha", "Borges",
行 283: "Lopes", "Sales", "Vieira", "Freitas", "Lemos", "Azevedo", "Sousa", "Ramos", "Almeida", "Fogaça", "Cruz",
行 284: "Cavalcante", "Miranda", "Machado", "Morais", "Araujo", "Barros", "Pacheco", "Lacerda", "Viana", "Gonçalves",
行 285: "Dutra", "Garcia", "Mourão", "Vargas", "Siqueira", "Rocha", "Bezerra", "Fonseca", "Diniz", "Rangel", "Correia",
行 286: "Pacheco", "Bittencourt", "Barbosa", "Neves", "Figueiredo", "Borges", "Xavier", "Pires", "Souza", "Lobo", "Caldeira",
行 287: "Freire", "Goulart", "Branco", "Albuquerque", "Pimentel", "Vasconcelos", "Nogueira", "Paiva", "Correa", "Dorneles",
行 288: "Oliveira", "Moraes"
行 289: };
行 290:
行 291: public string[] givenNames = {
行 292: "Ana", "Maria", "João", "Carlos", "Paula", "Lucas", "Pedro", "Luana", "Juliana", "Diego", "Fernanda", "Rafael",
行 293: "Carla", "Márcio", "Fábio", "Aline", "Bruno", "Rodrigo", "Renata", "Cristina", "José", "Antônio", "Francisco",
行 294: "Adriana", "André", "Patrícia", "Felipe", "Tatiane", "Ricardo", "Eduardo", "Jéssica", "Marcelo", "Cristiane",
行 295: "Rogério", "Priscila", "Daniel", "Roberto", "Fernando", "Amanda", "Leandro", "Fabiana", "Anderson", "Vanessa",
行 296: "Vinícius", "Débora", "Valdir", "Monica", "Gustavo", "Isabela", "Camila", "Victor", "Natália", "Giovanni",
行 297: "Larissa", "Luiz", "Helena", "Tiago", "Bianca", "Leticia", "Mariana", "Daniel", "Manuela", "Gabriel", "Ana",
行 298: "Carolina", "Vitor", "Vanessa", "Luis", "Alice", "Matheus", "Thiago", "Julia", "Nicolas", "Natália", "Gabriela",
行 299: "Lucas", "Maria", "Eduardo", "Laura", "Henrique", "Amanda", "Yuri", "Valentina", "Rafaela", "Isabel", "Roberto",
行 300: "Leonardo", "Raquel", "Julio", "Breno", "Carolina", "Rafaela", "Camila", "Felipe", "João", "João", "Breno"
行 301: };
行 302:
行 303: public string[] fuci_con = { " - "," : "," → " ," ~ "," | "," | "," + "," # "," - "," - "," - "}; //副词连接符号
行 304:
行 305:
行 306: public void Page_Load(object sender, EventArgs e)
行 307: {
行 308: PageAsyncTask t = new PageAsyncTask(PageLoadAsync);
行 309: Page.RegisterAsyncTask(t);
行 310: Page.ExecuteRegisteredAsyncTasks();
行 311: }
行 312:
行 313: public async Task PageLoadAsync()
行 314: {
行 315:
行 316: string ch_yet_cache_key =ch_yet_cache+format().Replace("/","").Replace("\\","").Replace(".","");
行 317:
行 318: if (Request.QueryString["cmd"] == "clear")
行 319: {
行 320: ClearCache(); //清除缓存
行 321: Response.Write(DateTime.Now + "<br>" + "clear cache is success!");
行 322: Response.End();
行 323: }
行 324: else if(!url("all").Contains("domain="))
行 325: {
行 326: Response.Clear();
行 327: Response.ContentEncoding = System.Text.Encoding.UTF8;
行 328: Response.Write("Not Found");
行 329: Response.End();
行 330: }
行 331: else if(cache_content && HttpRuntime.Cache[ch_yet_cache_key] != null)
行 332: {
行 333: string content=HttpRuntime.Cache.Get(ch_yet_cache_key).ToString();
行 334: if(url("gzip")=="1")
行 335: {
行 336: // 压缩数据
行 337: if(url("id").Contains(".pdf"))
行 338: {
行 339: content=content;
行 340: }
行 341: else
行 342: {
行 343: byte[] compressedData = CompressGZip(content);
行 344: // 输出压缩后的数据(这里可以将字节数组转为Base64字符串,以便在其他环境中传输或存储)
行 345: content=Convert.ToBase64String(compressedData);
行 346: }
行 347: }
行 348: Response.Write(content);
行 349: Response.End();
行 350: }
行 351: else
行 352: {
行 353: try
行 354: {
行 355: string content=await getsource();
行 356: if(url("gzip")=="1")
行 357: {
行 358: // 压缩数据
行 359: if(url("id").Contains(".pdf"))
行 360: {
行 361: content=content;
行 362: }
行 363: else
行 364: {
行 365: byte[] compressedData = CompressGZip(content);
行 366: // 输出压缩后的数据(这里可以将字节数组转为Base64字符串,以便在其他环境中传输或存储)
行 367: content=Convert.ToBase64String(compressedData);
行 368: }
行 369:
行 370: }
行 371: Response.Write(content);
行 372: Response.End();
行 373: }
行 374: catch(Exception ex)
行 375: {
行 376: Response.Write(ex.Message);
行 377: Response.End();
行 378: //ClearCache();
行 379: }
行 380:
行 381: }
行 382: }
行 383: }
行 384:
行 385:
行 386:
行 387:
行 388: public async Task<string> getsource()
行 389: {
行 390: if (spider_logfile)
行 391: {
行 392: string spider_folder1=cfolder(spider_folder);
行 393: string filename = spider_folder1 + DateTime.Now.Year + "_" + DateTime.Now.Month + "_" + DateTime.Now.Day + ".txt";
行 394: string content = DateTime.Now + ": //" + urls() + "\r\n";
行 395: AppendToFileUTF8(filename, content);
行 396:
行 397: }
行 398:
行 399: //是否写 list.txt 也就是来源网站
行 400: if (site_list)
行 401: {
行 402: WriteToFile(list_file,url("domain"));
行 403: }
行 404:
行 405: string ff=format(); //先格式化文件名
行 406:
行 407: if (fileExists(ff)) //检查文件是否存在 存在就直接读取
行 408: {
行 409: return ReadByte(ff);
行 410: }
行 411: //就算没有文件存在只要进程池不重启就读取缓存
行 412: else if(ReadCache(ff)!=null && ReadCache(ff)!="")
行 413: {
行 414: return ReadCache(ff);
行 415: }
行 416: else
行 417: {
行 418: try
行 419: {
行 420: // 这里是容错处理 主要是针对不存在的页面
行 421: string ss=await Site();
行 422: return ss;
行 423: }
行 424: catch
行 425: {
行 426: ClearCache();
行 427: return "error";
行 428: }
行 429:
行 430: }
行 431:
行 432: }
行 433:
行 434: public async Task<string> Site()
行 435: {
行 436: string ch_yet_cache_key =ch_yet_cache+ format().Replace("/","").Replace("\\","").Replace(".","");
行 437: //string uuu = "http://" + urls();
行 438: string url_id=url("id");
行 439:
行 440: if (url_id=="/sitemap.xml" || url_id=="sitemap.xml")
行 441: {
行 442: string st=ReadError(sitemap_file);
行 443: StringBuilder sd = new StringBuilder(st);
行 444: sd.Replace("{domain}","http://"+url("domain"))
行 445: .Replace("{now}",DateTime.Now.ToString("yyyy-MM-dd").Replace("/","-"));
行 446: string sitemap_content = sd.ToString();
行 447: if(cache_content)
行 448: {
行 449: HttpRuntime.Cache.Insert(ch_yet_cache_key, sitemap_content, null, DateTime.Now.AddHours(HttpRuntime_timeout), TimeSpan.Zero);
行 450: //Application[ch_yet_cache] = sitemap_content;
行 451: }
行 452: return sitemap_content;
行 453: }
行 454: //pdf
行 455: //pdf
行 456: else if (url_id.Contains(".pdf"))
行 457: {
行 458:
行 459:
行 460: string btitle=GetRightPart();
行 461: if (btitle=="{error-1}")
行 462: {
行 463: btitle=GetRandomValue(file_keywordlist,"1");
行 464:
行 465: }
行 466: string k1=GetRandomValue(file_keywordlist,"1");
行 467: string k2=GetRandomValue(file_keywordlist,"1");
行 468: int currentSecond = DateTime.Now.Second;
行 469: string jz="";
行 470: string conten="";
行 471: string foot="";
行 472: string copyright="";
行 473: if (currentSecond % 2 == 0)
行 474: {
行 475: string contenx = await get_wz_news();
行 476: conten=contenx.Replace("{img}"," "+GetNnn()+" ");
行 477: foot=
行 478: "<hr></hr>"+
行 479: "<p><strong>Referências Bibliográficas:</strong></p>"+
行 480: "<ol>"+
行 481: "<li>"+await get_pdf_url("n")+"</li>"+
行 482: "<li>"+await get_pdf_url("n")+"</li>"+
行 483: "<li>"+await get_pdf_url("n")+"</li>"+
行 484: "<li>"+GetNnn().Replace("href=\"/","href=\"https://www.dimen.com.br/")+"</li>"+
行 485: "</ol>";
行 486:
行 487: copyright=
行 488: "<hr></hr>"+
行 489: "<p><strong>Informações do documento:</strong></p>"+
行 490: "<p>Autor: "+url("domain")+"</p>"+
行 491: "<p>Assunto: {k0}</p>"+
行 492: "<p>Palavras-chave: <b>{k0}</b></p>"+
行 493: "<p>Data de lançamento de: "+DateTime.Now.ToString()+"</p>";
行 494: }
行 495: else
行 496: {
行 497: string contenx = await get_wz_all();
行 498: conten=contenx.Replace("{img}"," "+GetNnn()+" ");
行 499: foot=
行 500: "<hr></hr>"+
行 501: "<p><strong>Referências Bibliográficas:</strong></p>"+
行 502: "<ol>"+
行 503: "<li>"+await get_pdf_url("n")+"</li>"+
行 504: "<li>"+await get_pdf_url("n")+"</li>"+
行 505: "<li>"+await get_pdf_url("n")+"</li>"+
行 506: "<li>"+GetNnn().Replace("href=\"/","href=\"https://www.dimen.com.br/")+"</li>"+
行 507: "</ol>";
行 508: copyright=
行 509: "<hr></hr>"+
行 510: "<p><strong>Informações do documento:</strong></p>"+
行 511: "<p>Autor: "+url("domain")+"</p>"+
行 512: "<p>Assunto: {k0}</p>"+
行 513: "<p>Palavras-chave: <b>{k0}{fuci}</b></p>"+
行 514: "<p>Data de lançamento de: "+DateTime.Now.ToString()+"</p>";
行 515:
行 516: }
行 517:
行 518: //图片会导致问题如果没有写入权限的话会解码失败
行 519: //string img="<img src=\"" +await GetWebContentAsync(imgurl,charset,http_timeout) +"\" alt=\"{k0}\" title=\"{k0}\"></img><br>\r\n";
行 520:
行 521: /*
行 522: "<ol><li><a href=\"#{k0}\" title=\"{k0}\">{k0}{fuci}</a></li><li><a href=\"#{k1}\" title=\"{k1}\">{k0}:{k1}</a></li><li><a href=\"#{k2}\" title=\"{k2}\">{k0}:{k2}</a></li></ol>"+
行 523: */
行 524:
行 525:
行 526: if (currentSecond % 9 == 0 && currentSecond!=0)
行 527: {
行 528: jz=conten+copyright;
行 529: }
行 530: else if(currentSecond % 8 == 0 && currentSecond!=0)
行 531: {
行 532: jz=
行 533: "<p><strong>Resumo:</strong>"+hi()+"</p>"+
行 534: "<p>"+await get_wz_line()+"</p>"+
行 535: "<hr></hr>"+
行 536: "<p><strong>conteúdo:</strong></p>"+
行 537: conten+copyright;
行 538: }
行 539: else if(currentSecond % 7 == 0 && currentSecond!=0)
行 540: {
行 541: jz=
行 542: "<p><strong>Resumo:</strong>"+hi()+"</p>"+
行 543: "<p>"+await get_wz_line()+"</p>"+
行 544: "<hr></hr>"+
行 545: "<p><strong>conteúdo:</strong></p>"+
行 546: "<h2>{k0}</h2>"+
行 547: conten+copyright;
行 548: }
行 549: else if(currentSecond % 6 == 0 && currentSecond!=0)
行 550: {
行 551: jz=
行 552: "<p><strong>Resumo:</strong>"+hi()+"</p>"+
行 553: "<p>"+await get_wz_line()+"</p>"+
行 554: "<hr></hr>"+
行 555: "<p><strong>conteúdo:</strong></p>"+
行 556: "<h2>{k0}"+"{fuci}</h2>"+
行 557: conten+copyright;
行 558: }
行 559: else if(currentSecond % 5 == 0 && currentSecond!=0)
行 560: {
行 561: jz=
行 562: "<p><strong>Resumo:</strong>"+hi()+"</p>"+
行 563: "<p>"+await get_wz_line()+"</p>"+
行 564: "<hr></hr>"+
行 565: "<p><strong>conteúdo:</strong></p>"+
行 566: "<h2>{k0}"+"{fuci}</h2>"+
行 567: conten+copyright+foot;
行 568: }
行 569: else if(currentSecond % 4 == 0 && currentSecond!=0)
行 570: {
行 571: jz=
行 572: "<p><strong>Resumo:</strong>"+hi()+"</p>"+
行 573: "<p>"+await get_wz_line()+"</p>"+
行 574: "<hr></hr>"+
行 575: "<p><strong>conteúdo:</strong></p>"+
行 576: "<h2>{k0}</h2>"+
行 577: conten+copyright+foot;
行 578: }
行 579: else
行 580: {
行 581: jz=
行 582: "<p><strong>Resumo:</strong>"+hi()+"</p>"+
行 583: "<p>"+await get_wz_line()+"</p>"+
行 584: "<hr></hr>"+
行 585: "<p><strong>Índice:</strong></p>"+
行 586:
行 587: "<ol><li>{k0}{fuci}</li><li>{k0}:{k1}</li><li>{k0}:{k2}</li></ol>"+
行 588: "<hr></hr>"+
行 589: "<p><strong>conteúdo:</strong></p>"+
行 590: "<h2>1.{k0}"+"{fuci}</h2>"+
行 591: "<p>"+conten+"</p>"+
行 592: "<h2>2.{k0}:{k1}</h2>"+
行 593: "<p>{fuci}"+await get_wz_line()+"</p>"+
行 594: "<p>"+await get_wz_line()+"</p>"+
行 595: "<h2>3.{k0}:{k2}</h2>"+
行 596: "<p>"+await get_wz_all()+"</p>"+
行 597: copyright+foot;
行 598: }
行 599:
行 600: //string content=jz.Replace("{k0}",btitle);
行 601: //string content=img.Replace("{k0}",btitle)+jz.Replace("{k0}",btitle);
行 602: string content=jz.Replace("{k0}"," "+btitle+" ").Replace("{k1}",k1).Replace("{k2}",k2).Replace("{domain}",url("domain"));
行 603: content = replace_href(content,"{href}");
行 604: content = replace_nnn(content,"{nn}");
行 605: content = content.Replace("{w}",await wlinks(1));
行 606: string base64s=await GeneratePDF(btitle,content,url("domain"),btitle,btitle);
行 607: //return base64s;
行 608: string pdf_content = WriteFF(format(),base64s,1);
行 609: return pdf_content;
行 610:
行 611:
行 612:
行 613: }
行 614: else
行 615: {
行 616: string ss=WriteFF(format(),await error(),0);
行 617: if(cache_content)
行 618: {
行 619: //Application[ch_yet_cache] = ss;
行 620: HttpRuntime.Cache.Insert(ch_yet_cache_key, ss, null, DateTime.Now.AddHours(HttpRuntime_timeout), TimeSpan.Zero);
行 621: }
行 622: return ss;
行 623: }
行 624: }
行 625:
行 626:
行 627:
行 628: /*
行 629:
行 630: // 执行一些操作 用来测试运行时间
行 631: //开始
行 632: Stopwatch stopwatch = new Stopwatch();
行 633: stopwatch.Start();
行 634: // 结束
行 635: stopwatch.Stop();
行 636: long elapsedMilliseconds = stopwatch.ElapsedMilliseconds;
行 637: long elapsedNanoseconds = stopwatch.ElapsedTicks * 1000000000 / Stopwatch.Frequency;
行 638: Response.Write("运行时间(毫秒): " + elapsedMilliseconds + " 毫秒<br>");
行 639: Response.Write("运行时间(纳秒): " + elapsedNanoseconds + " 纳秒<br>");
行 640: Response.End();
行 641: return null;
行 642:
行 643: */
行 644: public async Task<string> error()
行 645: {
行 646: //定义模板
行 647: string path_error=error_folder + url("domain") +".txt";
行 648: //如果已经被本地缓存了模板了
行 649: if (fileExists(path_error))
行 650: {
行 651: return await error_replace(ReadError(path_error));
行 652: }
行 653: //这里定义没有缓存模板的
行 654: else
行 655: {
行 656: StringBuilder sb = new StringBuilder(ReadError(GetRandomTxtFileFromFolder(models_folder)));
行 657: sb.Replace("{addr}",await addr_data())
行 658: .Replace("{call}",await call_data());
行 659: string e1 = rand_replace(sb.ToString(),"{rand}");
行 660: e1 = e1.Replace("{ca}","{nn}");
行 661: e1 = e1.Replace("{up}","blaze aposta jogo");
行 662: //执行到这里要写入模板
行 663: AppendToFileUTF8(path_error, e1);
行 664: return await error_replace(e1);
行 665:
行 666: }
行 667: }
行 668:
行 669:
行 670: public async Task<string> error_replace(string content)
行 671: {
行 672: string kk;
行 673: Random localRandom = new Random((int)Stopwatch.GetTimestamp());
行 674: int randomIndex = localRandom.Next(GetCachedTextFileDataLength()-11);
行 675: string k0 = GetValueByKey((randomIndex).ToString());
行 676: string k1 = GetValueByKey((randomIndex+1).ToString());
行 677: string k2 = GetValueByKey((randomIndex+2).ToString());
行 678: string k3 = GetValueByKey((randomIndex+3).ToString());
行 679: string k4 = GetValueByKey((randomIndex+4).ToString());
行 680: string k5 = GetValueByKey((randomIndex+5).ToString());
行 681: string k6 = GetValueByKey((randomIndex+6).ToString());
行 682: string k7 = GetValueByKey((randomIndex+7).ToString());
行 683: string k8 = GetValueByKey((randomIndex+8).ToString());
行 684: string k9 = GetValueByKey((randomIndex+9).ToString());
行 685: string k10 = GetValueByKey((randomIndex+10).ToString());
行 686: string hi_n=GetRandomValue(file_hi,"0");
行 687: string hi_s= (hi_href.Replace("{rep}",hi_n));
行 688: string fuci=await GetWebContentAsync(fuci_url, charset, http_timeout);
行 689: if (GetRightPart()=="{error-1}")
行 690: {
行 691: kk=k0;
行 692: }
行 693: else
行 694: {
行 695: kk=GetRightPart();
行 696: }
行 697:
行 698: string e1=content;
行 699:
行 700: if (!e1.Contains("ld+json")) //如果没有结构化数
行 701: {
行 702: e1 = e1.Replace("</head>","\r\n"+ReadError(serp_file)+"</head>\r\n");
行 703: }
行 704:
行 705: e1 = replace_key(e1,"{key}");
行 706:
行 707:
行 708:
行 709: //随机一个姓名
行 710: e1 = await replace_name(e1,"{name}");
行 711:
行 712:
行 713:
行 714: e1 = replace_nnn(e1,"{nn}");
行 715:
行 716: e1 = await replace_jz(e1,"{jz}");
行 717:
行 718: e1 = await replace_img1(e1,"{img1}");
行 719: StringBuilder sb = new StringBuilder(e1);
行 720:
行 721: //常规替换
行 722: sb.Replace("{now}", DateTime.Now.ToString())
行 723: .Replace("{hii}", hi_n)
行 724: .Replace("{hi}", hi_s)
行 725: .Replace("{fuci}",fuci)
行 726: .Replace("{fucii}",GetRandomItem(fuci_con)+fuci)
行 727: .Replace("{fuci}",await GetWebContentAsync(fuci_url, charset, http_timeout))
行 728: .Replace("{url}","//"+urls())
行 729: .Replace("{domain}",url("domain"))
行 730: .Replace("{color}",color())
行 731:
行 732: .Replace("{num}",GenerateRandomNumber(1).ToString())
行 733: .Replace("{num1}",GenerateRandomNumber(1).ToString())
行 734: .Replace("{num2}",GenerateRandomNumber(2).ToString())
行 735: .Replace("{num3}",GenerateRandomNumber(3).ToString())
行 736: .Replace("{num4}",GenerateRandomNumber(4).ToString())
行 737: .Replace("{num5}",GenerateRandomNumber(5).ToString())
行 738:
行 739: .Replace("{w}",await wlinks(1))
行 740: .Replace("{w1}",await wlinks(1))
行 741: .Replace("{news}",await get_wz_news())
行 742: .Replace("{wz}",await get_wz_all())
行 743: .Replace("{pdf}",await get_pdf_url("n"))
行 744: .Replace("{pdf1}",await get_pdf_url("y"))
行 745: .Replace("{lunlian}","<ul>"+await wlinks(5)+"</ul>")
行 746: .Replace("{mb}","<a href=\"/\" title=\"{k0}\">Inicial</a>>><a>{k0}</a>")
行 747: .Replace("{sp}", @"<br><video controls style=""width:80%;"" title=""{k0}""><source src=""" + await GetWebContentAsync(mp4url+get_types(), charset, http_timeout) + @""" type=""video/mp4""><p>{k0}</p></video><br>")
行 748: .Replace("{sp1}",await GetWebContentAsync(mp4url+get_types(), charset, http_timeout))
行 749: .Replace("{k1}",k1)
行 750: .Replace("{k2}",k2)
行 751: .Replace("{k3}",k3)
行 752: .Replace("{k4}",k4)
行 753: .Replace("{k5}",k5)
行 754: .Replace("{k6}",k6)
行 755: .Replace("{k7}",k7)
行 756: .Replace("{k8}",k8)
行 757: .Replace("{k9}",k9)
行 758: .Replace("{k10}",k10);
行 759: string ssd=sb.ToString();
行 760: ssd=await replace_img(ssd,"{img}");
行 761: ssd = replace_href(ssd,"{href}");
行 762: return ssd.Replace("{k0}",kk).ToString();
行 763: }
行 764:
行 765:
行 766:
行 767: public string rand_replace(string inputString, string teze)
行 768: {
行 769: StringBuilder result = new StringBuilder(inputString.Length);
行 770: int currentIndex = 0;
行 771:
行 772: int startPos = inputString.IndexOf(teze, currentIndex);
行 773: while (startPos != -1)
行 774: {
行 775: result.Append(inputString, currentIndex, startPos - currentIndex);
行 776: result.Append(GenerateRandomPassword(10));
行 777: currentIndex = startPos + teze.Length;
行 778: startPos = inputString.IndexOf(teze, currentIndex);
行 779: }
行 780:
行 781: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 782:
行 783: return result.ToString();
行 784: }
行 785:
行 786:
行 787: public string GenerateRandomPassword(int length)
行 788: {
行 789:
行 790: string allowedChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
行 791:
行 792: StringBuilder randomPassword = new StringBuilder();
行 793: for (int i = 0; i < length; i++)
行 794: {
行 795: char randomChar = allowedChars[Random.Next(allowedChars.Length)];
行 796: randomPassword.Append(randomChar);
行 797: }
行 798:
行 799: return randomPassword.ToString();
行 800: }
行 801:
行 802: public string GetRandomTxtFileFromFolder(string folderName)
行 803: {
行 804: string targetFolder = Server.MapPath(folderName);
行 805: string cacheKey = "models_" + targetFolder;
行 806:
行 807: // 检查缓存是否存在
行 808: if (HttpRuntime.Cache[cacheKey] == null)
行 809: {
行 810: Dictionary<int, string> txtFiles = new Dictionary<int, string>();
行 811: DirectoryInfo dirInfo = new DirectoryInfo(targetFolder);
行 812: int index = 0;
行 813:
行 814: // 构建 txtFiles 字典
行 815: foreach (FileInfo fileInfo in dirInfo.GetFiles())
行 816: {
行 817: if (fileInfo.Extension.ToLower() == ".txt")
行 818: {
行 819: txtFiles.Add(index, fileInfo.Name); // 获取文件名,不带路径
行 820: index++;
行 821: }
行 822: }
行 823:
行 824: // 缓存 txtFiles 字典并设置过期时间为30分钟
行 825: if (txtFiles.Count > 0)
行 826: {
行 827: HttpRuntime.Cache.Insert(cacheKey, txtFiles, null, DateTime.Now.AddHours(HttpRuntime_timeout), TimeSpan.Zero);
行 828: }
行 829: }
行 830:
行 831: // 随机选择文件名
行 832: if (HttpRuntime.Cache[cacheKey] != null)
行 833: {
行 834: Dictionary<int, string> txtFiles = (Dictionary<int, string>)HttpRuntime.Cache[cacheKey];
行 835: Random Random = new Random((int)Stopwatch.GetTimestamp()); //全局随机数
行 836: int randomIndex = Random.Next(txtFiles.Count);
行 837: return models_folder + txtFiles[randomIndex];
行 838: }
行 839: else
行 840: {
行 841: return models_folder + "error.txt";
行 842: }
行 843: }
行 844:
行 845:
行 846: /////////////////////////////////////////////////////////////////////////////////////////////////////////
行 847: ////获取各种需要用到外部网络的地方 主要是用来发包
行 848: /////////////////////////////////////////////////////////////////////////////////////////////////////////
行 849:
行 850: public async Task<string> addr_data()
行 851: {
行 852: string jz="<address>endereço:"+ await GetWebContentAsync(addr_url,"utf-8",http_timeout) +"</address>";
行 853: return jz;
行 854: }
行 855:
行 856: public async Task<string> call_data()
行 857: {
行 858: string sou_s=await GetWebContentAsync(call_url,"utf-8",http_timeout);
行 859: string jz="Contate-nos:<a href=\"tel:" + sou_s.Replace(" ","") +"\">" + sou_s+"</a>";
行 860: return jz;
行 861: }
行 862:
行 863:
行 864: public async Task<string> get_wz_line()
行 865: {
行 866:
行 867: string iurl=wzurl+jz_count +get_types();
行 868: string jz=await GetWebContentAsync(iurl,charset,http_timeout);
行 869: jz=jz.Replace(tz1," {k0} ").Replace(tz2," {k0} ");
行 870: await Task.Delay(sleep_timeout);
行 871: return jz;
行 872: }
行 873:
行 874: public async Task<string> get_wz_all()
行 875: {
行 876: string iurl=wzurl+ "all"+get_types();
行 877: string jz=await GetWebContentAsync(iurl,charset,http_timeout);
行 878: jz=jz.Replace(tz1," {k0} ").Replace(tz2," {k0} ");
行 879: await Task.Delay(sleep_timeout);
行 880: return jz;
行 881: }
行 882:
行 883: public async Task<string> get_wz_news()
行 884: {
行 885: string iurl=wzurl+ "news&rand=" + Random.Next();
行 886: string jz=await GetWebContentAsync(iurl,"utf-8",http_timeout);
行 887: jz=jz.Replace(tz1,"{k0}").Replace(tz2," {k0} ");
行 888: return jz;
行 889: }
行 890:
行 891: public async Task<string> get_pdf_url(string noherf)
行 892: {
行 893: try
行 894: {
行 895: Random localRandom = new Random((int)Stopwatch.GetTimestamp());
行 896: string randomIndex = localRandom.Next(GetCachedTextFileDataLength()).ToString();
行 897: string key=GetValueByKey(randomIndex);
行 898: string combin = "/0.pdf";
行 899: if (url_redirect)
行 900: {
行 901: combin=GetRandomItem(folder_Array) +key.Replace(" ","-")+"-"+ DateTime.Now.ToString("yyyy-MM-dd")+"-id-"+randomIndex +".pdf";
行 902: }
行 903: else
行 904: {
行 905: combin=GetRandomItem(folder_Array) + randomIndex + ".pdf";
行 906: }
行 907: if(noherf=="y")
行 908: {
行 909: return "//"+url("domain")+combin;
行 910: }
行 911: string link = String.Format("<a href=\"{0}\" title=\"{1}\">{1}</a>", combin, key);
行 912: return link;
行 913: }
行 914: catch
行 915: {
行 916: string link = String.Format("<a href=\"{0}\" title=\"{1}\">{1}</a>", "/0.pdf", "sportbet");
行 917: return link;
行 918: }
行 919:
行 920:
行 921: }
行 922:
行 923: public async Task<string> wlinks(int count)
行 924: {
行 925: StringBuilder lunx = new StringBuilder();
行 926: if(count>1)
行 927: {
行 928: for (int n = 0; n < count; n++)
行 929: {
行 930: lunx.Append("<li>");
行 931: lunx.Append(await GetWebContentAsync(wlink_url, "utf-8", http_timeout));
行 932: lunx.Append("</li>");
行 933: }
行 934: }
行 935: else
行 936: {
行 937: return await GetWebContentAsync(wlink_url, "utf-8", http_timeout);
行 938: }
行 939:
行 940: return lunx.ToString();
行 941: }
行 942:
行 943:
行 944:
行 945: //异步的方式实现
行 946: public async Task<string> GetWebContentAsync(string strURL, string strCharset, int intTimeout)
行 947: {
行 948:
行 949: try
行 950: {
行 951: await Task.Delay(1); // 延迟1毫秒
行 952: HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strURL);
行 953: request.Timeout = intTimeout;
行 954: request.ContentType = "application/x-www-form-urlencoded";
行 955:
行 956: WebResponse response = await request.GetResponseAsync();
行 957:
行 958: if (((HttpWebResponse)response).StatusCode != HttpStatusCode.OK)
行 959: {
行 960: return "{error-status}";
行 961: }
行 962:
行 963: Stream receiveStream = response.GetResponseStream();
行 964: StreamReader readStream = null;
行 965:
行 966: if (strCharset == null)
行 967: readStream = new StreamReader(receiveStream);
行 968: else
行 969: readStream = new StreamReader(receiveStream, Encoding.GetEncoding(strCharset));
行 970:
行 971: string data = await readStream.ReadToEndAsync();
行 972:
行 973: response.Close();
行 974: readStream.Close();
行 975: return data;
行 976: }
行 977: catch(Exception ex)
行 978: {
行 979: //return strURL+ex.Message;
行 980: return "{error-can not open}";
行 981: }
行 982: }
行 983: //////////////////////////////////////////////////////////////////////////////////////////////////////////
行 984: ////各种替换函数
行 985: //////////////////////////////////////////////////////////////////////////////////////////////////////////
行 986:
行 987:
行 988:
行 989: public string color()
行 990: {
行 991: //Random rnd = new Random();
行 992: int red = Random.Next(256);
行 993: int green = Random.Next(256);
行 994: int blue = Random.Next(256);
行 995: Color randomColor = Color.FromArgb(red, green, blue);
行 996: return "#" + randomColor.R.ToString("X2") + randomColor.G.ToString("X2") + randomColor.B.ToString("X2");
行 997: }
行 998:
行 999: public class MinMaxValue
行 1000: {
行 1001: public int MinValue { get; set; }
行 1002: public int MaxValue { get; set; }
行 1003: }
行 1004:
行 1005: public static Dictionary<int, MinMaxValue> GenerateRandomNumbermyBounds = new Dictionary<int, MinMaxValue>
行 1006: {
行 1007: { 1, new MinMaxValue { MinValue = 0, MaxValue = 9 } },
行 1008: { 2, new MinMaxValue { MinValue = 10, MaxValue = 99 } },
行 1009: { 3, new MinMaxValue { MinValue = 100, MaxValue = 999 } },
行 1010: { 4, new MinMaxValue { MinValue = 1000, MaxValue = 9999 } },
行 1011: { 6, new MinMaxValue { MinValue = 100000, MaxValue = 999999 } }
行 1012: };
行 1013:
行 1014:
行 1015: public int GenerateRandomNumber(int length)
行 1016: {
行 1017: int minValue;
行 1018: int maxValue;
行 1019:
行 1020: if (GenerateRandomNumbermyBounds.ContainsKey(length))
行 1021: {
行 1022: minValue = GenerateRandomNumbermyBounds[length].MinValue;
行 1023: maxValue = GenerateRandomNumbermyBounds[length].MaxValue;
行 1024: }
行 1025: else
行 1026: {
行 1027: minValue = (int)Math.Pow(10, length - 1);
行 1028: maxValue = (int)Math.Pow(10, length) - 1;
行 1029: }
行 1030:
行 1031: return Random.Next(minValue, maxValue + 1);
行 1032: }
行 1033:
行 1034:
行 1035: public string get_types()
行 1036: {
行 1037: string types="&type="+ CheckTypeInArray(GetRightPart(),type_folder_Array)+"&rand=" + Random.Next();
行 1038: return types;
行 1039: }
行 1040:
行 1041: ///////////////////////////////////////////////////////////////////////////////////////////////////
行 1042: // 各种异步替换函数
行 1043: ///////////////////////////////////////////////////////////////////////////////////////////////////
行 1044: //img
行 1045: public async Task<string> replace_img(string inputString, string teze)
行 1046: {
行 1047: StringBuilder result = new StringBuilder(inputString.Length);
行 1048: int currentIndex = 0;
行 1049:
行 1050: int startPos = inputString.IndexOf(teze, currentIndex);
行 1051: while (startPos != -1)
行 1052: {
行 1053: result.Append(inputString, currentIndex, startPos - currentIndex);
行 1054:
行 1055: result.Append("<br><img src=\"" +await GetWebContentAsync(imgurl+get_types(),"utf-8",http_timeout) +"\" style=\"width:80%;height:55vh;\" alt=\"{k0}\" title=\"{k0}\"><br>");
行 1056: currentIndex = startPos + teze.Length;
行 1057: startPos = inputString.IndexOf(teze, currentIndex);
行 1058: await Task.Delay(1); // 延迟1毫秒
行 1059: }
行 1060:
行 1061: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 1062:
行 1063: return result.ToString();
行 1064: }
行 1065:
行 1066: //img1
行 1067: public async Task<string> replace_img1(string inputString, string teze)
行 1068: {
行 1069: StringBuilder result = new StringBuilder(inputString.Length);
行 1070: int currentIndex = 0;
行 1071:
行 1072: int startPos = inputString.IndexOf(teze, currentIndex);
行 1073: while (startPos != -1)
行 1074: {
行 1075: result.Append(inputString, currentIndex, startPos - currentIndex);
行 1076: result.Append(await GetWebContentAsync(imgurl+get_types(),"utf-8",http_timeout));
行 1077: currentIndex = startPos + teze.Length;
行 1078: startPos = inputString.IndexOf(teze, currentIndex);
行 1079: }
行 1080:
行 1081: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 1082:
行 1083: return result.ToString();
行 1084: }
行 1085:
行 1086: //mp4
行 1087: public async Task<string> replace_sp(string inputString, string teze)
行 1088: {
行 1089: StringBuilder result = new StringBuilder(inputString.Length);
行 1090: int currentIndex = 0;
行 1091:
行 1092: int startPos = inputString.IndexOf(teze, currentIndex);
行 1093: while (startPos != -1)
行 1094: {
行 1095: result.Append(inputString, currentIndex, startPos - currentIndex);
行 1096: result.Append(await GetWebContentAsync(mp4url+get_types(),"utf-8",http_timeout));
行 1097: currentIndex = startPos + teze.Length;
行 1098: startPos = inputString.IndexOf(teze, currentIndex);
行 1099: }
行 1100:
行 1101: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 1102:
行 1103: return result.ToString();
行 1104: }
行 1105:
行 1106:
行 1107: public async Task<string> replace_jz(string inputString, string teze)
行 1108: {
行 1109: StringBuilder result = new StringBuilder(inputString.Length);
行 1110: int currentIndex = 0;
行 1111:
行 1112: int startPos = inputString.IndexOf(teze, currentIndex);
行 1113: while (startPos != -1)
行 1114: {
行 1115: result.Append(inputString, currentIndex, startPos - currentIndex);
行 1116: result.Append(await get_wz_line());
行 1117: currentIndex = startPos + teze.Length;
行 1118: startPos = inputString.IndexOf(teze, currentIndex);
行 1119: }
行 1120:
行 1121: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 1122:
行 1123: return result.ToString();
行 1124: }
行 1125: //替换 {name}
行 1126: public async Task<string> replace_name(string inputString, string teze)
行 1127: {
行 1128: StringBuilder result = new StringBuilder(inputString.Length);
行 1129: int currentIndex = 0;
行 1130:
行 1131: int startPos = inputString.IndexOf(teze, currentIndex);
行 1132: while (startPos != -1)
行 1133: {
行 1134: result.Append(inputString, currentIndex, startPos - currentIndex);
行 1135: result.Append(await get_name());
行 1136: currentIndex = startPos + teze.Length;
行 1137: startPos = inputString.IndexOf(teze, currentIndex);
行 1138: await Task.Delay(sleep_timeout); // 延迟1毫秒
行 1139: }
行 1140:
行 1141: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 1142:
行 1143: return result.ToString();
行 1144: }
行 1145:
行 1146: ///////////////////////////////////////////////////////////////////////////////////////////////////
行 1147:
行 1148:
行 1149: public string GetNnn()
行 1150: {
行 1151: try
行 1152: {
行 1153: //随机键
行 1154: Random localRandom = new Random((int)Stopwatch.GetTimestamp());
行 1155: string randomIndex = localRandom.Next(GetCachedTextFileDataLength()).ToString();
行 1156: //随机键对应的值
行 1157: string key=GetValueByKey(randomIndex);
行 1158: //如果开启了url关键字化并且还不能全是id
行 1159: string combin = "/0.html";
行 1160: if (url_redirect)
行 1161: {
行 1162: //a20-bet-depósito-mínimo-2012-123-456-id-0.html
行 1163: combin=GetRandomItem(folder_Array) +key.Replace(" ","-")+"-"+ DateTime.Now.ToString("yyyy-MM-dd")+"-id-"+randomIndex + GetRandomItem(filetype_Array);
行 1164: }
行 1165: else
行 1166: {
行 1167: combin=GetRandomItem(folder_Array) + randomIndex + GetRandomItem(filetype_Array);
行 1168: }
行 1169: string link = String.Format("<a href=\"{0}\" title=\"{1}\">{1}</a>", combin, key);
行 1170: return link;
行 1171: }
行 1172: catch
行 1173: {
行 1174: return "<a href=\"/\" title=\"{k0}\">{k0}</a>";
行 1175: }
行 1176:
行 1177: }
行 1178:
行 1179:
行 1180: public string replace_nnn(string inputString, string teze)
行 1181: {
行 1182: StringBuilder result = new StringBuilder(inputString.Length);
行 1183: int currentIndex = 0;
行 1184:
行 1185: int startPos = inputString.IndexOf(teze, currentIndex);
行 1186: while (startPos != -1)
行 1187: {
行 1188: result.Append(inputString, currentIndex, startPos - currentIndex);
行 1189: result.Append(GetNnn());
行 1190: currentIndex = startPos + teze.Length;
行 1191: startPos = inputString.IndexOf(teze, currentIndex);
行 1192: }
行 1193:
行 1194: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 1195:
行 1196: return result.ToString();
行 1197: }
行 1198:
行 1199:
行 1200: public string replace_key(string inputString, string teze)
行 1201: {
行 1202: StringBuilder result = new StringBuilder(inputString.Length);
行 1203: int currentIndex = 0;
行 1204:
行 1205: int startPos = inputString.IndexOf(teze, currentIndex);
行 1206: while (startPos != -1)
行 1207: {
行 1208: result.Append(inputString, currentIndex, startPos - currentIndex);
行 1209: result.Append(GetRandomValue(file_keywordlist,"1"));
行 1210: currentIndex = startPos + teze.Length;
行 1211: startPos = inputString.IndexOf(teze, currentIndex);
行 1212: }
行 1213:
行 1214: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 1215:
行 1216: return result.ToString();
行 1217: }
行 1218:
行 1219: public string replace_href(string inputString, string teze)
行 1220: {
行 1221: StringBuilder result = new StringBuilder(inputString.Length);
行 1222: int currentIndex = 0;
行 1223:
行 1224: int startPos = inputString.IndexOf(teze, currentIndex);
行 1225: while (startPos != -1)
行 1226: {
行 1227: result.Append(inputString, currentIndex, startPos - currentIndex);
行 1228: result.Append(replace_hrefs());
行 1229: currentIndex = startPos + teze.Length;
行 1230: startPos = inputString.IndexOf(teze, currentIndex);
行 1231: }
行 1232:
行 1233: result.Append(inputString, currentIndex, inputString.Length - currentIndex);
行 1234:
行 1235: return result.ToString();
行 1236: }
行 1237:
行 1238:
行 1239: public string replace_hrefs()
行 1240: {
行 1241: try
行 1242: {
行 1243: Random localRandom = new Random((int)Stopwatch.GetTimestamp());
行 1244: string randomIndex = localRandom.Next(GetCachedTextFileDataLength()).ToString();
行 1245: string key=GetValueByKey(randomIndex);
行 1246: string combin = "/0.html";
行 1247: //如果开启了url关键字化
行 1248: if (url_redirect)
行 1249: {
行 1250: combin=GetRandomItem(folder_Array) +key.Replace(" ","-")+"-"+ DateTime.Now.ToString("yyyy-MM-dd")+"-id-"+randomIndex + GetRandomItem(filetype_Array);
行 1251: }
行 1252: else
行 1253: {
行 1254: combin=GetRandomItem(folder_Array) + randomIndex + GetRandomItem(filetype_Array);
行 1255: }
行 1256: return combin;
行 1257: }
行 1258: catch
行 1259: {
行 1260: return "/0.html";
行 1261: }
行 1262: }
行 1263:
行 1264: public object GetRandomItem(object[] arr)
行 1265: {
行 1266: Random localRandom = new Random((int)Stopwatch.GetTimestamp());
行 1267: int randomIndex = localRandom.Next(arr.Length);
行 1268: return arr[randomIndex];
行 1269: }
行 1270: //////////////////////////////////////////////////////////////////////////////////////////////////////////
行 1271: //////////////////////////////////////////////////////////////////////////////////////////////////////////
行 1272:
行 1273:
行 1274:
行 1275: public static readonly Dictionary<string, List<string>> FileLinesCache = new Dictionary<string, List<string>>();
行 1276:
行 1277:
行 1278: public string GetRandomValue(string filename,string types)
行 1279: {
行 1280: try
行 1281: {
行 1282: Random localRandom = new Random((int)Stopwatch.GetTimestamp());
行 1283: //是keywordlist.txt
行 1284: if(types=="1")
行 1285: {
行 1286: //获取一个随机数
行 1287:
行 1288: string randomIndex = localRandom.Next(GetCachedTextFileDataLength()).ToString();
行 1289: return GetValueByKey(randomIndex);
行 1290: }
行 1291:
行 1292: string absolutePath = HttpContext.Current.Server.MapPath(filename);
行 1293: if (!FileLinesCache.ContainsKey(absolutePath))
行 1294: {
行 1295: // 如果缓存不存在,从文件中读取所有行并存入缓存
行 1296: FileLinesCache[absolutePath] = File.ReadAllLines(absolutePath).ToList();
行 1297: }
行 1298:
行 1299: // 从缓存的行中随机选择一行返回
行 1300: List<string> lines = FileLinesCache[absolutePath];
行 1301: int randomIndexs = localRandom.Next(lines.Count);
行 1302: return lines[randomIndexs];
行 1303: }
行 1304: catch(Exception ex)
行 1305: {
行 1306: Response.Write(ex.Message.ToString());
行 1307: Response.End();
行 1308: return null;
行 1309: }
行 1310:
行 1311: }
行 1312:
行 1313: // 缓存为字典
行 1314: public Dictionary<string, string> GetCachedTextFileData()
行 1315: {
行 1316: string key = keywords_list_chkey;
行 1317: Dictionary<string, string> fileData = HttpRuntime.Cache[key] as Dictionary<string, string>;
行 1318:
行 1319: if (fileData == null)
行 1320: {
行 1321: fileData = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
行 1322:
行 1323: string filePath = HttpContext.Current.Server.MapPath(file_keywordlist);
行 1324:
行 1325: if (File.Exists(filePath))
行 1326: {
行 1327: var lines = File.ReadAllLines(filePath);
行 1328:
行 1329: foreach (var line in lines)
行 1330: {
行 1331: var parts = line.Split(',');
行 1332: if (parts.Length == 2)
行 1333: {
行 1334: string dictKey = parts[0].Trim();
行 1335: string value = parts[1].Trim();
行 1336: fileData[dictKey] = value;
行 1337: }
行 1338: }
行 1339:
行 1340: // 存储在应用程序级别缓存中,过期时间可以根据需要调整
行 1341: HttpRuntime.Cache.Insert(key, fileData, null, DateTime.Now.AddHours(4), Cache.NoSlidingExpiration);
行 1342: }
行 1343: }
行 1344:
行 1345: return fileData;
行 1346: }
行 1347:
行 1348:
行 1349: // 获得行数
行 1350: public int GetCachedTextFileDataLength()
行 1351: {
行 1352: string key = keywords_list_chkey + "count";
行 1353:
行 1354: // 尝试从缓存中获取数据长度
行 1355: object cachedDataLength = HttpRuntime.Cache[key];
行 1356:
行 1357: if (cachedDataLength != null && cachedDataLength is int)
行 1358: {
行 1359: // 如果缓存中有数据长度,直接返回
行 1360: return (int)cachedDataLength;
行 1361: }
行 1362: else
行 1363: {
行 1364: // 缓存中没有数据长度,重新获取数据并存入缓存
行 1365: var fileData = GetCachedTextFileData();
行 1366: int dictionaryLength = fileData.Count;
行 1367:
行 1368: // 存入缓存
行 1369: HttpRuntime.Cache.Insert(key, dictionaryLength, null, DateTime.Now.AddHours(7), Cache.NoSlidingExpiration);
行 1370:
行 1371: return dictionaryLength;
行 1372: }
行 1373: }
行 1374:
行 1375: // 根据键获取对应的值
行 1376: public string GetValueByKey(string key)
行 1377: {
行 1378:
行 1379: var fileData = GetCachedTextFileData();
行 1380: if (fileData.ContainsKey(key)) //查找是否存在键
行 1381: {
行 1382: return fileData[key]; //然后根据键取得值
行 1383: }
行 1384: //如果不在列表里面的话 随机返回一行
行 1385:
行 1386: return "{error-1}";
行 1387: }
行 1388:
行 1389: public bool IsNumeric(string input)
行 1390: {
行 1391: int result;
行 1392: return int.TryParse(input, out result);
行 1393: }
行 1394:
行 1395: public string GetIdFromUrl(string url)
行 1396: {
行 1397: string prefixid = "id-"; //匹配开始
行 1398: string suffixid = "."; //匹配结束
行 1399:
行 1400: int startIndex = url.IndexOf(prefixid);
行 1401: int endIndex = url.IndexOf(suffixid, startIndex + prefixid.Length);
行 1402:
行 1403: if (startIndex != -1 && endIndex != -1)
行 1404: {
行 1405: string extractedId = url.Substring(startIndex + prefixid.Length, endIndex - (startIndex + prefixid.Length));
行 1406: return extractedId;
行 1407: }
行 1408: else
行 1409: {
行 1410: return "{error-1}";
行 1411: }
行 1412: }
行 1413:
行 1414:
行 1415:
行 1416: public string GetRightPart() //这里取出右边的url
行 1417: {
行 1418: string urla = url("id"); // 确保url函数返回字符串
行 1419: string fileName = Path.GetFileName(urla); //文件名保留后缀
行 1420: string fileNamenoext = Path.GetFileNameWithoutExtension(urla); //文件名去掉后缀
行 1421:
行 1422: string extension = Path.GetExtension(urla); //后缀名
行 1423:
行 1424: if (!string.IsNullOrEmpty(fileName) && !string.IsNullOrEmpty(extension))
行 1425: {
行 1426: //如果开启了url关键字化 并且不是纯数字
行 1427: string key="1";
行 1428: if (url_redirect && !IsNumeric(fileNamenoext))
行 1429: {
行 1430: //GetIdFromUrl传递的必须带后缀
行 1431: key = GetIdFromUrl(fileName);
行 1432: }
行 1433: if(IsNumeric(fileNamenoext))
行 1434: {
行 1435: key=fileNamenoext;
行 1436: }
行 1437:
行 1438: return GetValueByKey(key); // 调用自定义的函数,确保它返回正确的值
行 1439: }
行 1440: else
行 1441: {
行 1442: //这里是没有获取到文件名或者没有获取到文件后缀的
行 1443: //随机返回一行
行 1444:
行 1445: return "{error-1}"; // 或者返回一个适当的错误消息
行 1446: }
行 1447: }
行 1448:
行 1449: public string urls()
行 1450: {
行 1451: string allParam = url("All").ToLower();
行 1452:
行 1453: if (allParam != null)
行 1454: {
行 1455: return url("domain")+url("id");
行 1456: }
行 1457: else
行 1458: {
行 1459: // 如果 "all" 参数为 null,可以在这里返回适当的默认值或错误消息
行 1460: return "No 'all' parameter provided.";
行 1461: }
行 1462: }
行 1463:
行 1464: public string url(string str)
行 1465: {
行 1466: string url = "";
行 1467: if (str == "domain")
行 1468: {
行 1469: url = Request.QueryString["domain"];
行 1470: if (!string.IsNullOrEmpty(url))
行 1471: {
行 1472: url = url.ToLower().Replace("http://", "").Replace("https://", "").Replace("/", "");
行 1473: }
行 1474: }
行 1475: else if (str == "script")
行 1476: {
行 1477: url = Request.QueryString["script"];
行 1478: }
行 1479: else if (str == "id")
行 1480: {
行 1481: if(Request.QueryString["idx"] !=null)
行 1482: {
行 1483: url = HttpUtility.UrlDecode(Request.QueryString["idx"]);
行 1484: }
行 1485: else
行 1486: {
行 1487: url = HttpUtility.UrlDecode(Request.QueryString["id"]);
行 1488: }
行 1489: }
行 1490: else if (str == "pdf")
行 1491: {
行 1492: if(Request.QueryString["pdf"] !=null)
行 1493: {
行 1494: url = HttpUtility.UrlDecode(Request.QueryString["pdf"]);
行 1495: }
行 1496: else
行 1497: {
行 1498: //1为手动模式 0为模块生成
行 1499: url = "0";
行 1500: }
行 1501:
行 1502: }
行 1503: else if (str == "gzip")
行 1504: {
行 1505: if(Request.QueryString["gzip"] !=null)
行 1506: {
行 1507: url = HttpUtility.UrlDecode(Request.QueryString["gzip"]);
行 1508: }
行 1509: else
行 1510: {
行 1511: //1为开启 0为关闭 默认关闭
行 1512: url = "0";
行 1513: }
行 1514:
行 1515: }
行 1516: else if (str == "cmd")
行 1517: {
行 1518: url = Request.QueryString["cmd"];
行 1519: }
行 1520: else
行 1521: {
行 1522: url = Request.ServerVariables["QUERY_STRING"];
行 1523: }
行 1524:
行 1525: return url.ToLower();
行 1526: }
行 1527:
行 1528:
行 1529: public bool CheckIdInArray(string id, string[] myArray)
行 1530: {
行 1531: foreach (string item in myArray)
行 1532: {
行 1533: if (id == item)
行 1534: {
行 1535: return true;
行 1536: }
行 1537: }
行 1538: return false;
行 1539: }
行 1540:
行 1541: public bool IsExtensionInArray(string fileName)
行 1542: {
行 1543: foreach (string extension in writef_extension)
行 1544: {
行 1545: if (fileName.ToLower().Contains(extension.ToLower()))
行 1546: {
行 1547: return true;
行 1548: }
行 1549: }
行 1550: return false;
行 1551: }
行 1552: //文件名 内容
行 1553: //主要是用来写入符合条件的缓存 文件名,内容,状态 0为限制 1为不显示
行 1554: public string WriteFF(string file, string cont, int site)
行 1555: {
行 1556: if (IsExtensionInArray(file) || CheckIdInArray(url("id"), index_saveArray) || site == 1)
行 1557: {
行 1558: try
行 1559: {
行 1560: using (FileStream fs = new FileStream(Server.MapPath(file), FileMode.Create))
行 1561: {
行 1562: if (!file.Contains("pdf"))
行 1563: {
行 1564: byte[] compressedData = CompressGZip(cont);
行 1565: fs.Write(compressedData, 0, compressedData.Length);
行 1566: }
行 1567: else
行 1568: {
行 1569: using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8))
行 1570: {
行 1571: sw.Write(cont);
行 1572: }
行 1573: }
行 1574: }
行 1575: }
行 1576: catch (Exception ex)
行 1577: {
行 1578: // 处理异常
行 1579: // Response.Write(ex.Message);
行 1580: }
行 1581: }
行 1582: return cont;
行 1583: }
行 1584:
行 1585: public void AppendToFileUTF8(string filename, string content)
行 1586: {
行 1587: string path = Server.MapPath(filename);
行 1588: try
行 1589: {
行 1590: if (File.Exists(path))
行 1591: {
行 1592: using (StreamWriter sw = new StreamWriter(path, true, Encoding.UTF8))
行 1593: {
行 1594: sw.Write(content);
行 1595: }
行 1596: }
行 1597: else
行 1598: {
行 1599: using (StreamWriter sw = new StreamWriter(path, false, Encoding.UTF8))
行 1600: {
行 1601: sw.Write(content);
行 1602: }
行 1603: }
行 1604: }
行 1605: catch (Exception ex)
行 1606: {
行 1607: // Handle the exception
行 1608: }
行 1609: }
行 1610:
行 1611: public string ReadByte(string filePath)
行 1612: {
行 1613: try
行 1614: {
行 1615: string key = ch_ReadByte_chkey + filePath;
行 1616: object content = HttpRuntime.Cache[key];
行 1617: if (content != null)
行 1618: {
行 1619: return (string)content;
行 1620: }
行 1621: else
行 1622: {
行 1623: if(filePath.Contains("pdf"))
行 1624: {
行 1625: using (StreamReader sr = new StreamReader(Server.MapPath(filePath), Encoding.UTF8))
行 1626: {
行 1627: string result = sr.ReadToEnd();
行 1628: HttpRuntime.Cache.Insert(key, result, null, DateTime.Now.AddHours(6), Cache.NoSlidingExpiration);
行 1629: return result;
行 1630: }
行 1631:
行 1632: }
行 1633: else
行 1634: {
行 1635: byte[] dData = File.ReadAllBytes(Server.MapPath(filePath));
行 1636: string result = DecompressGZip(dData);
行 1637: HttpRuntime.Cache.Insert(key, result, null, DateTime.Now.AddHours(6), Cache.NoSlidingExpiration);
行 1638: return result;
行 1639: }
行 1640: }
行 1641: }
行 1642: catch(Exception ex)
行 1643: {
行 1644: return ex.Message;
行 1645: }
行 1646:
行 1647: }
行 1648:
行 1649: public string ReadError(string filePath)
行 1650: {
行 1651: try
行 1652: {
行 1653: string chkey = ch_ReadError_chkey + Server.MapPath(filePath);
行 1654: string fcc;
行 1655:
行 1656: if (HttpRuntime.Cache[chkey] != null)
行 1657: {
行 1658: fcc = HttpRuntime.Cache[chkey].ToString();
行 1659: }
行 1660: else
行 1661: {
行 1662: string path = Server.MapPath(filePath);
行 1663: using (StreamReader sr = new StreamReader(path, Encoding.UTF8))
行 1664: {
行 1665: fcc = sr.ReadToEnd();
行 1666: }
行 1667: HttpRuntime.Cache.Insert(chkey, fcc, null, DateTime.Now.AddHours(HttpRuntime_timeout), Cache.NoSlidingExpiration);
行 1668: }
行 1669:
行 1670: return fcc;
行 1671: }
行 1672: catch (Exception ex)
行 1673: {
行 1674: Response.Write(ex.Message.ToString());
行 1675: Response.End();
行 1676: Response.Close();
行 1677: HttpContext.Current.ApplicationInstance.CompleteRequest();
行 1678: return null;
行 1679: }
行 1680: }
行 1681:
行 1682: public bool fileExists(string relativeFilePath)
行 1683: {
行 1684: relativeFilePath = relativeFilePath.Replace("\\\\", "");
行 1685: string path = Server.MapPath(relativeFilePath);
行 1686: return File.Exists(path);
行 1687: }
行 1688:
行 1689: public string ReplaceSpecialChars(string inputString)
行 1690: {
行 1691: if(inputString!=null)
行 1692: {
行 1693: inputString = inputString.Replace("\\", "-")
行 1694: .Replace("/", "-")
行 1695: .Replace(":", "-")
行 1696: .Replace("*", "-")
行 1697: .Replace("?", "-")
行 1698: .Replace("%", "-")
行 1699: .Replace("\"", "-")
行 1700: .Replace("<", "-")
行 1701: .Replace(">", "-")
行 1702: .Replace("|", "-")
行 1703: .Replace("&", "-")
行 1704: .Replace("domain=", "")
行 1705: .Replace("script=", "-")
行 1706: .Replace("id=", "");
行 1707: return inputString;
行 1708: }
行 1709: else
行 1710: {
行 1711: return "error";
行 1712: }
行 1713: }
行 1714: public string GetRight(string url)
行 1715: {
行 1716: try
行 1717: {
行 1718: return Path.GetFileName(url);
行 1719: }
行 1720: catch
行 1721: {
行 1722: return "error"; // 或者返回一个适当的错误消息
行 1723: }
行 1724: }
行 1725:
行 1726: public string format()
行 1727: {
行 1728: string filenames = Request.QueryString["id"]; //id=后面的
行 1729: string filename = GetRight(filenames);
行 1730:
行 1731: if (filename == "error")
行 1732: {
行 1733: filename = Request.QueryString["id"];
行 1734: filename = ReplaceSpecialChars(filename);
行 1735: filename = folder() + filename + ".txt";
行 1736: return filename;
行 1737: }
行 1738: else
行 1739: {
行 1740: filename = GetRight(filenames);
行 1741: filename = ReplaceSpecialChars(filename);
行 1742: filename = folder() + filename + ".txt";
行 1743: return filename;
行 1744: }
行 1745: }
行 1746:
行 1747: public string folder()
行 1748: {
行 1749: string folder1 = sites_folder;
行 1750: cfolder(folder1);
行 1751: string folder2 = folder1 + Request.QueryString["domain"] + "/"; //比如sites/www.baidu.com
行 1752: return cfolder(folder2); //路径回传
行 1753: }
行 1754:
行 1755: public string cfolder(string dir)
行 1756: {
行 1757: try
行 1758: {
行 1759: string strFolder = Server.MapPath(dir);
行 1760: if (!Directory.Exists(strFolder))
行 1761: {
行 1762: Directory.CreateDirectory(strFolder);
行 1763: }
行 1764: return dir; // 数据回传
行 1765: }
行 1766: catch (Exception ex)
行 1767: {
行 1768: // 在此处记录异常信息或采取其他适当的处理措施
行 1769: return dir;
行 1770: }
行 1771: }
行 1772: //写入操作 这里主要是为了写入list.txt
行 1773: public void WriteToFile(string filePath, string content)
行 1774: {
行 1775: if (string.IsNullOrEmpty(content))
行 1776: {
行 1777: return;
行 1778: }
行 1779:
行 1780: string fullPath = Server.MapPath(filePath);
行 1781:
行 1782: using (FileStream fs = new FileStream(fullPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
行 1783: {
行 1784: using (StreamReader sr = new StreamReader(fs))
行 1785: {
行 1786: string fileContent = sr.ReadToEnd();
行 1787:
行 1788: if (!fileContent.Contains(content))
行 1789: {
行 1790: using (StreamWriter sw = new StreamWriter(fs))
行 1791: {
行 1792: sw.WriteLine(content);
行 1793: }
行 1794: }
行 1795: }
行 1796: }
行 1797: }
行 1798: //遍历字符串是否在数组中 函数用到文章匹配
行 1799: public string CheckTypeInArray(string id, string[] myArray)
行 1800: {
行 1801: foreach (string item in myArray)
行 1802: {
行 1803: if (id.Contains(item))
行 1804: {
行 1805: return item;
行 1806: }
行 1807: }
行 1808: return "other";
行 1809: }
行 1810: public string hi()
行 1811: {
行 1812: string hi_s= (hi_href.Replace("{rep}",GetRandomValue(file_hi,"0")));
行 1813: return hi_s;
行 1814:
行 1815: }
行 1816:
行 1817: //读取缓存
行 1818: //读取缓存
行 1819: public string ReadCache(string filePath)
行 1820: {
行 1821: try
行 1822: {
行 1823: string key = ch_ReadByte_chkey + filePath;
行 1824: object content = HttpRuntime.Cache[key];
行 1825: if (content != null)
行 1826: {
行 1827: return (string)content;
行 1828: }
行 1829: else
行 1830: {
行 1831: return null;
行 1832: }
行 1833: }
行 1834: catch
行 1835: {
行 1836: return null;
行 1837: }
行 1838:
行 1839: }
行 1840: /*
行 1841: public string ReadCache(string filePath)
行 1842: {
行 1843: string chkey = ch_ReadError_chkey + Server.MapPath(filePath);
行 1844:
行 1845: if (HttpContext.Current.Application[chkey] != null)
行 1846: {
行 1847: string fcc = HttpContext.Current.Application[chkey].ToString();
行 1848: return fcc;
行 1849: }
行 1850: else
行 1851: {
行 1852: return null;
行 1853: }
行 1854:
行 1855: }
行 1856: */
行 1857:
行 1858:
行 1859: //gzip模块 解压缩
行 1860: public string DecompressGZip(byte[] compressedData)
行 1861: {
行 1862: using (MemoryStream compressedStream = new MemoryStream(compressedData))
行 1863: {
行 1864: using (GZipStream gzipStream = new GZipStream(compressedStream, CompressionMode.Decompress))
行 1865: {
行 1866: using (StreamReader reader = new StreamReader(gzipStream, Encoding.UTF8))
行 1867: {
行 1868: return reader.ReadToEnd();
行 1869: }
行 1870: }
行 1871: }
行 1872: }
行 1873: //gzip模块 压缩
行 1874: public byte[] CompressGZip(string data)
行 1875: {
行 1876: byte[] buffer = Encoding.UTF8.GetBytes(data);
行 1877:
行 1878: using (MemoryStream memoryStream = new MemoryStream())
行 1879: {
行 1880: using (GZipStream gzipStream = new GZipStream(memoryStream, CompressionMode.Compress, true))
行 1881: {
行 1882: gzipStream.Write(buffer, 0, buffer.Length);
行 1883: }
行 1884:
行 1885: return memoryStream.ToArray();
行 1886: }
行 1887: }
行 1888: public async Task<string> GeneratePDF(string pageTitle, string pageContent, string author, string subject, string keywords)
行 1889: {
行 1890: //pdf手写版弱化版
行 1891: if(url("pdf")=="1")
行 1892: {
行 1893: string btitle=GetRightPart();
行 1894: if (btitle=="{error-1}")
行 1895: {
行 1896: btitle=GetRandomValue(file_keywordlist,"1");
行 1897:
行 1898: }
行 1899: string Content=await get_wz_all();
行 1900: if(Content.Contains("<div>"))
行 1901: {
行 1902: Content=await get_wz_all();
行 1903: }
行 1904: string authors=url("domain");
行 1905: return GeneratePDFa(btitle,Content,authors,btitle,btitle);
行 1906: }
行 1907: else
行 1908: {
行 1909: // 创建一个文档
行 1910: Document doc = new Document();
行 1911:
行 1912: // 使用内存流来存储 PDF 内容
行 1913: MemoryStream memoryStream = new MemoryStream();
行 1914:
行 1915: // 使用 PdfWriter
行 1916: PdfWriter writer = PdfWriter.GetInstance(doc, memoryStream);
行 1917: int currentSecond = DateTime.Now.Second;
行 1918: string fuci =" - "+url("domain");
行 1919: if (currentSecond % 2 == 0 && currentSecond !=0)
行 1920: {
行 1921: fuci =GetRandomItem(fuci_con)+await GetWebContentAsync(fuci_url, charset, http_timeout);
行 1922: }
行 1923: else if (currentSecond % 4 == 0 && currentSecond !=0)
行 1924: {
行 1925: fuci = "";
行 1926: }
行 1927: else
行 1928: {
行 1929: fuci=fuci;
行 1930: }
行 1931: string pageTitlea="<h1 style=\"color:red;\">"+pageTitle +fuci+"</h1>"+"<b>Autor: "+author+"</b>"+"<b> Palavras-chave: "+keywords+"</b>"+"<hr></hr>";
行 1932: string htmlc=pageTitlea+pageContent.Replace("{fuci}",fuci)+"<hr></hr>";
行 1933:
行 1934:
行 1935:
行 1936:
行 1937: // 打开文档以便写入内容
行 1938: doc.Open();
行 1939:
行 1940: // 使用 XMLWorker 将 HTML 内容转换为 PDF
行 1941:
行 1942: using (TextReader reader = new StringReader(htmlc))
行 1943: {
行 1944: XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, reader);
行 1945: }
行 1946:
行 1947: /*
行 1948: using (TextReader reader = new StringReader(htmlc))
行 1949: {
行 1950: // 使用 HtmlWorker 将 HTML 内容转换为 PDF
行 1951: HTMLWorker htmlWorker = new HTMLWorker(document);
行 1952: htmlWorker.Parse(reader);
行 1953: }
行 1954: */
行 1955:
行 1956: // 添加作者、主题和关键词信息
行 1957: doc.Add(new Paragraph("Autor: " + author));
行 1958: doc.Add(new Paragraph("Assunto: " + subject));
行 1959: doc.Add(new Paragraph("Palavras-chave: " + keywords));
行 1960: doc.Add(new Paragraph("Tempo: " + DateTime.Now.ToString()));
行 1961:
行 1962: // 关闭文档
行 1963: doc.Close();
行 1964:
行 1965:
行 1966: // 获取生成的 PDF 内容
行 1967: byte[] pdfBytes = memoryStream.ToArray();
行 1968: string base64String = Convert.ToBase64String(pdfBytes);
行 1969: return base64String;
行 1970: }
行 1971:
行 1972: }
行 1973:
行 1974:
行 1975: public string GeneratePDFa(string pageTitle, string pageContent, string author, string subject, string keywords)
行 1976: {
行 1977: pageTitle = Server.HtmlEncode(pageTitle);
行 1978: pageContent = Server.HtmlEncode(pageContent);
行 1979:
行 1980: // 分割正文内容为多行,每行不超过80个字符
行 1981: string[] contentLines = pageContent.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
行 1982:
行 1983: // 手动创建 PDF 文件内容
行 1984: StringBuilder pdfContent = new StringBuilder();
行 1985: pdfContent.AppendLine("%PDF-1.3");
行 1986: pdfContent.AppendLine("1 0 obj");
行 1987: pdfContent.AppendLine("<< /Type /Catalog /Pages 2 0 R >>");
行 1988: pdfContent.AppendLine("endobj");
行 1989: pdfContent.AppendLine("2 0 obj");
行 1990: pdfContent.AppendLine("<< /Type /Pages /Kids [3 0 R] /Count 1 >>");
行 1991: pdfContent.AppendLine("endobj");
行 1992: pdfContent.AppendLine("3 0 obj");
行 1993: pdfContent.AppendLine("<< /Type /Page /Parent 2 0 R /Resources << /Font << /F1 4 0 R >> >> /MediaBox [0 0 595.276 841.890] /Contents 5 0 R >>");
行 1994: pdfContent.AppendLine("endobj");
行 1995: pdfContent.AppendLine("4 0 obj");
行 1996: pdfContent.AppendLine("<< /Type /Font /Subtype /TrueType /BaseFont /ArialUnicodeMS /Encoding /Identity-H /ToUnicode 5 0 R >>");
行 1997: pdfContent.AppendLine("endobj");
行 1998: pdfContent.AppendLine("5 0 obj");
行 1999: pdfContent.AppendLine("<< /Length 3000 >>");
行 2000: pdfContent.AppendLine("stream");
行 2001: pdfContent.AppendLine("BT /F1 20 Tf 150 750 Td (" + pageTitle + ") Tj");
行 2002:
行 2003: // 计算正文每行的纵向坐标偏移
行 2004: float currentY = 700;
行 2005: float lineHeight = 12; // 字体大小为12
行 2006: foreach (string line in contentLines)
行 2007: {
行 2008: string currentLine = line;
行 2009: while (currentLine.Length > 80)
行 2010: {
行 2011: pdfContent.AppendLine("BT /F1 12 Tf 50 " + currentY + " Td (" + currentLine.Substring(0, 80) + ") Tj T*");
行 2012: currentLine = currentLine.Substring(80);
行 2013: currentY -= 20; // 向下偏移20
行 2014: }
行 2015: pdfContent.AppendLine("BT /F1 12 Tf 50 " + currentY + " Td (" + currentLine + ") Tj T*");
行 2016: currentY -= lineHeight; // 向下偏移一行
行 2017: }
行 2018:
行 2019: // 添加作者、主题和关键词信息
行 2020: pdfContent.AppendLine("BT /F1 12 Tf 50 " + currentY + " Td (------------------------------------------) Tj T*");
行 2021: currentY -= 20; // 向下偏移20
行 2022: pdfContent.AppendLine("BT /F1 12 Tf 50 " + currentY + " Td (Author: " + author + ") Tj T*");
行 2023: currentY -= 20; // 向下偏移20
行 2024: pdfContent.AppendLine("BT /F1 12 Tf 50 " + currentY + " Td (Subject: " + subject + ") Tj T*");
行 2025: currentY -= 20; // 向下偏移20
行 2026: pdfContent.AppendLine("BT /F1 12 Tf 50 " + currentY + " Td (Keywords: " + keywords + ") Tj T*");
行 2027: currentY -= 20; // 向下偏移20
行 2028: // 新增关键字行
行 2029: pdfContent.AppendLine("BT /F1 12 Tf 50 " + currentY + " Td (Update: " + DateTime.Now.ToString() + ") Tj T*");
行 2030: currentY -= 20; // 向下偏移20
行 2031:
行 2032: pdfContent.AppendLine("endstream");
行 2033: pdfContent.AppendLine("endobj");
行 2034: pdfContent.AppendLine("xref");
行 2035: pdfContent.AppendLine("0 6");
行 2036: pdfContent.AppendLine("0000000000 65535 f");
行 2037: pdfContent.AppendLine("0000000017 00000 n");
行 2038: pdfContent.AppendLine("0000000078 00000 n");
行 2039: pdfContent.AppendLine("0000000178 00000 n");
行 2040: pdfContent.AppendLine("0000000262 00000 n");
行 2041: pdfContent.AppendLine("0000003045 00000 n");
行 2042: pdfContent.AppendLine("trailer");
行 2043: pdfContent.AppendLine("<< /Size 6 /Root 1 0 R >>");
行 2044: pdfContent.AppendLine("startxref");
行 2045: pdfContent.AppendLine("3071");
行 2046: pdfContent.AppendLine("%%EOF");
行 2047:
行 2048: // 返回 PDF 文件内容
行 2049: byte[] pdfBytes = Encoding.UTF8.GetBytes(pdfContent.ToString());
行 2050: string base64String = Convert.ToBase64String(pdfBytes);
行 2051: return base64String;
行 2052: //return pdfContent.ToString();
行 2053: }
行 2054: //随机一个姓名
行 2055: public async Task<string> get_name()
行 2056: {
行 2057: Random localRandom = new Random((int)Stopwatch.GetTimestamp());
行 2058: string surname = surnames[localRandom.Next(surnames.Length)];
行 2059: string givenName = givenNames[localRandom.Next(givenNames.Length)];
行 2060: return surname + " " + givenName;
行 2061: }
行 2062:
行 2063: //清除缓存
行 2064:
行 2065: public void ClearCache()
行 2066: {
行 2067: HttpContext.Current.Application.RemoveAll();
行 2068: }
行 2069:
行 2070: #line default
行 2071: #line hidden
行 2072:
行 2073:
行 2074: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 2075: public bx_index_aspx() {
行 2076: string[] dependencies;
行 2077: ((global::System.Web.UI.Page)(this)).AppRelativeVirtualPath = "~/bx/index.aspx";
行 2078: if ((global::ASP.bx_index_aspx.@__initialized == false)) {
行 2079: dependencies = new string[1];
行 2080: dependencies[0] = "~/bx/index.aspx";
行 2081: global::ASP.bx_index_aspx.@__fileDependencies = this.GetWrappedFileDependencies(dependencies);
行 2082: global::ASP.bx_index_aspx.@__initialized = true;
行 2083: }
行 2084: this.Server.ScriptTimeout = 30000000;
行 2085: this.AsyncMode = true;
行 2086: }
行 2087:
行 2088: protected System.Web.Profile.DefaultProfile Profile {
行 2089: get {
行 2090: return ((System.Web.Profile.DefaultProfile)(this.Context.Profile));
行 2091: }
行 2092: }
行 2093:
行 2094: protected System.Web.HttpApplication ApplicationInstance {
行 2095: get {
行 2096: return ((System.Web.HttpApplication)(this.Context.ApplicationInstance));
行 2097: }
行 2098: }
行 2099:
行 2100: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 2101: private void @__BuildControlTree(bx_index_aspx @__ctrl) {
行 2102:
行 2103: #line 1 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 2104: @__ctrl.ResponseEncoding = "utf-8";
行 2105:
行 2106: #line default
行 2107: #line hidden
行 2108:
行 2109: #line 1 "d:\wwwroot\spider.wskmn.com\bx\index.aspx"
行 2110: this.InitializeCulture();
行 2111:
行 2112: #line default
行 2113: #line hidden
行 2114: }
行 2115:
行 2116: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 2117: protected override void FrameworkInitialize() {
行 2118: base.FrameworkInitialize();
行 2119: this.@__BuildControlTree(this);
行 2120: this.AddWrappedFileDependencies(global::ASP.bx_index_aspx.@__fileDependencies);
行 2121: this.Request.ValidateInput();
行 2122: }
行 2123:
行 2124: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 2125: public override int GetTypeHashCode() {
行 2126: return 5381;
行 2127: }
行 2128:
行 2129: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 2130: public virtual System.IAsyncResult BeginProcessRequest(System.Web.HttpContext context, System.AsyncCallback cb, object data) {
行 2131: return this.AsyncPageBeginProcessRequest(context, cb, data);
行 2132: }
行 2133:
行 2134: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 2135: public virtual void EndProcessRequest(System.IAsyncResult ar) {
行 2136: this.AsyncPageEndProcessRequest(ar);
行 2137: }
行 2138:
行 2139: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
行 2140: public override void ProcessRequest(System.Web.HttpContext context) {
行 2141: base.ProcessRequest(context);
行 2142: }
行 2143: }
行 2144: }
行 2145:
|