NetHelper.cs 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Linq;
  5. using System.Text;
  6. using System.IO;
  7. using System.Net;
  8. using System.Drawing;
  9. using System.Globalization;
  10. using System.Web;
  11. using Newtonsoft.Json;
  12. namespace SCC.Common
  13. {
  14. /// <summary>
  15. /// 网络相关帮助类
  16. /// </summary>
  17. public class NetHelper
  18. {
  19. /// <summary>
  20. /// 获取IP
  21. /// </summary>
  22. /// <returns></returns>
  23. public static string GetIP()
  24. {
  25. string ip = string.Empty;
  26. if (!string.IsNullOrEmpty(System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"]))
  27. ip = Convert.ToString(System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]);
  28. if (string.IsNullOrEmpty(ip))
  29. ip = Convert.ToString(System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]);
  30. if (string.IsNullOrEmpty(ip))
  31. ip = System.Web.HttpContext.Current.Request.UserHostAddress;
  32. return ip;
  33. }
  34. /// <summary>
  35. /// 通过IP地址获取所属国家,省份,城市
  36. /// </summary>
  37. /// <param name="IP"></param>
  38. /// <returns></returns>
  39. public static List<string> GetCityByIP(string IP)
  40. {
  41. var url = string.Format(@"http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip={0}", IP);
  42. var htmlsource = GetUrlResponse(url, Encoding.GetEncoding("gbk"));
  43. if (!string.IsNullOrWhiteSpace(htmlsource))
  44. {
  45. string[] sarray = htmlsource.Trim().Split(new string[] { "\t" }, StringSplitOptions.RemoveEmptyEntries);
  46. if (sarray.Length == 6)
  47. {
  48. List<string> result = new List<string>();
  49. result.Add(sarray[3]);
  50. result.Add(sarray[4]);
  51. result.Add(sarray[5]);
  52. return result;
  53. }
  54. }
  55. return null;
  56. }
  57. #region HtmlAgilityPack
  58. public static int IpCount;
  59. public static List<string> IpList=new List<string>();
  60. public static string GetIp(string path = "", bool isGetIp = true)
  61. {
  62. if (isGetIp && IpList.Count > 0)
  63. {
  64. var ran = new Random().Next(0, IpList.Count);
  65. return IpList[ran];
  66. }
  67. if (string.IsNullOrEmpty(path))
  68. path = AppDomain.CurrentDomain.BaseDirectory + "IP.txt";
  69. StreamReader sr;
  70. try
  71. {
  72. sr = new StreamReader(path, System.Text.Encoding.GetEncoding("utf-8"));
  73. }
  74. catch (Exception)
  75. {
  76. sr = new StreamReader(path, System.Text.Encoding.GetEncoding("utf-8"));
  77. }
  78. string content = sr.ReadToEnd().ToString();
  79. sr.Close();
  80. var list = JsonConvert.DeserializeObject<List<string>>(content);
  81. content = "";
  82. if (isGetIp)
  83. IpList = list;
  84. var ram = new Random().Next(0, list.Count);
  85. IpCount = list.Count;
  86. return list[ram];
  87. }
  88. #endregion
  89. /// <summary>
  90. /// 请求Url资源
  91. /// </summary>
  92. /// <param name="url">目标Url地址</param>
  93. /// <returns></returns>
  94. public static string GetUrlResponse(string url)
  95. {
  96. if (!string.IsNullOrWhiteSpace(url))
  97. {
  98. //if (url.Contains("icaile"))
  99. // return GetUrlIPResponse(url, Encoding.UTF8);
  100. //else
  101. return GetUrlResponse(url, Encoding.UTF8);
  102. }
  103. return string.Empty;
  104. }
  105. public static string GetUrlIPResponse(string url, Encoding encode)
  106. {
  107. var NotIpList = new List<string>();
  108. var ip = GetIp();
  109. var html = new HttpIPHelper().GetHtml(new HttpItem
  110. {
  111. Url = url,
  112. Method = "Get",
  113. WebProxy = new WebProxy(ip)
  114. });
  115. bool isWebSoxket = false;
  116. int number = 0;
  117. if (!isWebSoxket)
  118. {
  119. while (string.IsNullOrEmpty(html.Html) || (html.Html.IndexOf("403") != -1 && html.Html.ToLower().IndexOf("forbidden") != -1)
  120. || (html.Html.IndexOf("HTTP Status 404") != -1 && html.Html.ToLower().IndexOf("not found") != -1)
  121. || html.Html.Contains("HTTP Error 404")
  122. || (html.Html.Contains("403") && html.Html.ToLower().Contains("forbidden"))
  123. || ((html.Html.Contains("HTTP Status 404") || html.Html.Contains("404 Not Found")) && html.Html.ToLower().Contains("not found"))
  124. || html.Html.Contains("502 Bad Gateway")
  125. || html.Html.Contains("400 Bad Request")
  126. || html.Html.Contains("<title>文档已移动</title>")
  127. || html.Html.Contains("<title>错误: 不能获取请求的 URL</title>")
  128. || html.Html.Contains("<title>500 Internal Server Error</title>")
  129. || html.Html.Contains("<title>安全检查! | 百度云加速</title>")
  130. || (html.Html.Contains("301 Moved Permanently") && html.Html.ToLower().Contains("moved permanently"))
  131. || (html.Html.Contains("The requested URL could not be retrieved") && html.Html.ToLower().Contains("could not be retrieved"))
  132. || html.Html.Contains("缓存访问被拒绝"))
  133. {
  134. number++;
  135. if (number > 100)
  136. return "";
  137. NotIpList.Add(ip);
  138. if (NotIpList.Distinct().ToList().Count == IpCount)
  139. return "";
  140. else
  141. ip =GetIp();
  142. while (NotIpList.Contains(ip))
  143. ip = GetIp();
  144. html = new HttpIPHelper().GetHtml(new HttpItem
  145. {
  146. Url = url,
  147. Method = "Get",
  148. WebProxy = new WebProxy(ip)
  149. });
  150. }
  151. }
  152. return html.Html;
  153. }
  154. /// <summary>
  155. /// 请求Url资源
  156. /// </summary>
  157. /// <param name="url">目标Url地址</param>
  158. /// <param name="encode">编码规则</param>
  159. /// <returns></returns>
  160. public static string GetUrlResponse(string url, Encoding encode)
  161. {
  162. if (!string.IsNullOrWhiteSpace(url) && encode != null)
  163. return GetUrlResponse(url, "GET", string.Empty, encode);
  164. return string.Empty;
  165. }
  166. /// <summary>
  167. /// 请求Url资源
  168. /// </summary>
  169. /// <param name="url">目标Url地址</param>
  170. /// <param name="method">请求方式</param>
  171. /// <param name="postdata">请求附加数据</param>
  172. /// <returns></returns>
  173. public static string GetUrlResponse(string url, string method, string postdata)
  174. {
  175. if (!string.IsNullOrWhiteSpace(url) && !string.IsNullOrWhiteSpace(method) && !string.IsNullOrWhiteSpace(postdata))
  176. return GetUrlResponse(url, method, postdata, Encoding.UTF8);
  177. return string.Empty;
  178. }
  179. /// <summary>
  180. /// 请求Url资源
  181. /// </summary>
  182. /// <param name="url">目标Url地址</param>
  183. /// <param name="method">请求方式</param>
  184. /// <param name="postdata">请求附加数据</param>
  185. /// <param name="encode">编码规则</param>
  186. /// <returns></returns>
  187. public static string GetUrlResponse(string url, string method, string postdata, Encoding encode)
  188. {
  189. Stream responseStream = null;
  190. try
  191. {
  192. HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
  193. request.Method = method;
  194. request.Timeout = 2 * 60 * 1000;
  195. if (!string.IsNullOrEmpty(postdata))
  196. {
  197. byte[] bs = encode.GetBytes(postdata);
  198. request.ContentLength = bs.Length;
  199. request.ContentType = "application/x-www-form-urlencoded";
  200. using (Stream requestStream = request.GetRequestStream())
  201. {
  202. requestStream.Write(bs, 0, bs.Length);
  203. }
  204. }
  205. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  206. var contentencode = response.ContentEncoding;
  207. if (contentencode == "gzip")
  208. responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
  209. else
  210. responseStream = response.GetResponseStream();
  211. using (StreamReader sr = new StreamReader(responseStream, encode))
  212. {
  213. var content = sr.ReadToEnd();
  214. return content.Replace("\r\n", string.Empty).Trim();
  215. }
  216. }
  217. catch (Exception e)
  218. {
  219. Trace.WriteLine(e.Message);
  220. }
  221. finally
  222. {
  223. if (responseStream != null)
  224. responseStream.Close();
  225. }
  226. return null;
  227. }
  228. #region 部分彩种自有请求网络数据方法
  229. /// <summary>
  230. /// 请求河南481(泳坛夺金)Url资源
  231. /// </summary>
  232. /// <param name="url">目标Url地址</param>
  233. /// <returns></returns>
  234. public static string GetHeNan481UrlResponse(string url)
  235. {
  236. Stream responseStream = null;
  237. try
  238. {
  239. HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
  240. request.Method = "GET";
  241. request.Timeout = 2 * 60 * 1000;
  242. CookieContainer container = new CookieContainer();
  243. Cookie cookie = new Cookie("JSESSIONID", "76322438526518B500CEB13023461A22", "/", "www.hnlottery.com.cn");
  244. container.Add(cookie);
  245. request.CookieContainer = container;
  246. request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36";
  247. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  248. var contentencode = response.ContentEncoding;
  249. if (contentencode == "gzip")
  250. responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
  251. else
  252. responseStream = response.GetResponseStream();
  253. using (StreamReader sr = new StreamReader(responseStream, Encoding.UTF8))
  254. {
  255. var content = sr.ReadToEnd();
  256. return content.Replace("\r\n", string.Empty).Trim();
  257. }
  258. }
  259. catch
  260. {
  261. }
  262. finally
  263. {
  264. if (responseStream != null)
  265. responseStream.Close();
  266. }
  267. return null;
  268. }
  269. /// <summary>
  270. /// 请求湖北11选5Url资源
  271. /// </summary>
  272. /// <param name="url">目标Url地址</param>
  273. /// <returns></returns>
  274. public static string GetHUB11X5UrlResponse(string url)
  275. {
  276. Stream responseStream = null;
  277. try
  278. {
  279. HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
  280. request.Method = "GET";
  281. request.Timeout = 2 * 60 * 1000;
  282. request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
  283. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  284. var contentencode = response.ContentEncoding;
  285. if (contentencode == "gzip")
  286. responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
  287. else
  288. responseStream = response.GetResponseStream();
  289. using (StreamReader sr = new StreamReader(responseStream, Encoding.UTF8))
  290. {
  291. var content = sr.ReadToEnd();
  292. return content.Replace("\r\n", string.Empty).Trim();
  293. }
  294. }
  295. catch
  296. {
  297. }
  298. finally
  299. {
  300. if (responseStream != null)
  301. responseStream.Close();
  302. }
  303. return null;
  304. }
  305. /// <summary>
  306. /// 请求山西11选5Url资源
  307. /// </summary>
  308. /// <param name="url">目标Url地址</param>
  309. /// <returns></returns>
  310. public static string GetShanXiTaiYuan11x5UrlResponse(string url)
  311. {
  312. Stream responseStream = null;
  313. try
  314. {
  315. HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
  316. request.Method = "GET";
  317. request.Timeout = 2 * 60 * 1000;
  318. CookieContainer container = new CookieContainer();
  319. Cookie cookie = new Cookie("JSESSIONID", "F76502A5D6582D7286C9CE7656FDAAEF", "/", "www.sxlottery.net");
  320. container.Add(cookie);
  321. request.CookieContainer = container;
  322. request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36";
  323. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  324. var contentencode = response.ContentEncoding;
  325. if (contentencode == "gzip")
  326. responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
  327. else
  328. responseStream = response.GetResponseStream();
  329. using (StreamReader sr = new StreamReader(responseStream, Encoding.UTF8))
  330. {
  331. var content = sr.ReadToEnd();
  332. return content.Replace("\r\n", string.Empty).Trim();
  333. }
  334. }
  335. catch
  336. {
  337. }
  338. finally
  339. {
  340. if (responseStream != null)
  341. responseStream.Close();
  342. }
  343. return null;
  344. }
  345. /// <summary>
  346. /// 请求重庆快乐十分Url资源
  347. /// </summary>
  348. /// <param name="url">目标Url地址</param>
  349. /// <param name="pageIndex">页码</param>
  350. /// <returns></returns>
  351. public static string GetCQKL10FUrlResponse(string url, int pageIndex)
  352. {
  353. Stream responseStream = null;
  354. try
  355. {
  356. HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
  357. request.Method = "POST";
  358. request.Timeout = 2 * 60 * 1000;
  359. CookieContainer container = new CookieContainer();
  360. Cookie cookie = new Cookie("ASP.NET_SessionId", "4e0ri0cjp5pyjkigils0wzvy", "/", "buy.cqcp.net");
  361. container.Add(cookie);
  362. request.CookieContainer = container;
  363. request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36";
  364. var postdata = "sPass=BEAB95B0BAA1242CF042D1659686F54B&idMode=9&iType=2&iCount=" + pageIndex;
  365. byte[] bs = Encoding.GetEncoding("gb2312").GetBytes(postdata);
  366. request.ContentLength = bs.Length;
  367. request.ContentType = "application/x-www-form-urlencoded";
  368. using (Stream requestStream = request.GetRequestStream())
  369. {
  370. requestStream.Write(bs, 0, bs.Length);
  371. }
  372. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  373. var contentencode = response.ContentEncoding;
  374. if (contentencode == "gzip")
  375. responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
  376. else
  377. responseStream = response.GetResponseStream();
  378. using (StreamReader sr = new StreamReader(responseStream, Encoding.GetEncoding("gb2312")))
  379. {
  380. var content = sr.ReadToEnd();
  381. return content.Replace("\r\n", string.Empty).Trim();
  382. }
  383. }
  384. catch
  385. {
  386. }
  387. finally
  388. {
  389. if (responseStream != null)
  390. responseStream.Close();
  391. }
  392. return null;
  393. }
  394. /// <summary>
  395. /// 请求百度彩票Url资源
  396. /// </summary>
  397. /// <param name="url">目标Url地址</param>
  398. /// <returns></returns>
  399. public static string GetBaiDuLeCaiResponse(string url)
  400. {
  401. Stream responseStream = null;
  402. try
  403. {
  404. HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
  405. request.Method = "GET";
  406. request.Timeout = 2 * 60 * 1000;
  407. request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36";
  408. request.Headers.Add("Accept-Encoding", "gzip, deflate, sdch");
  409. request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8");
  410. request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
  411. CookieContainer container = new CookieContainer();
  412. Cookie cookie = new Cookie("lehecai_request_control_stats", "2", "/", "baidu.lecai.com");
  413. container.Add(cookie);
  414. cookie = new Cookie("_lcas_uuid", "1886243347", "/", "baidu.lecai.com");
  415. container.Add(cookie);
  416. cookie = new Cookie("_lhc_uuid", "sp_587888388668b5.45001252", "/", "baidu.lecai.com");
  417. container.Add(cookie);
  418. request.CookieContainer = container;
  419. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  420. var contentencode = response.ContentEncoding;
  421. if (contentencode == "gzip")
  422. responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
  423. else
  424. responseStream = response.GetResponseStream();
  425. using (StreamReader sr = new StreamReader(responseStream, Encoding.GetEncoding("gb2312")))
  426. {
  427. var content = sr.ReadToEnd();
  428. return content.Replace("\r\n", string.Empty).Trim();
  429. }
  430. }
  431. catch
  432. {
  433. }
  434. finally
  435. {
  436. if (responseStream != null)
  437. responseStream.Close();
  438. }
  439. return null;
  440. }
  441. /// <summary>
  442. /// 请求甘肃11选5Url资源
  443. /// </summary>
  444. /// <param name="url">目标Url地址</param>
  445. /// <returns></returns>
  446. public static string GetGS11X5UrlResponse(string url)
  447. {
  448. Stream responseStream = null;
  449. try
  450. {
  451. HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
  452. request.Method = "GET";
  453. request.Timeout = 2 * 60 * 1000;
  454. request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36";
  455. request.Headers.Add("Accept-Encoding", "gzip, deflate, sdch");
  456. request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8");
  457. request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
  458. CookieContainer container = new CookieContainer();
  459. Cookie cookie = new Cookie("sid", "d4cc22d9-9b4c-49d0-8965-61e3fdbe8167", "/", "www.gstc.org.cn");
  460. container.Add(cookie);
  461. request.CookieContainer = container;
  462. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  463. var contentencode = response.ContentEncoding;
  464. if (contentencode == "gzip")
  465. responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
  466. else
  467. responseStream = response.GetResponseStream();
  468. using (StreamReader sr = new StreamReader(responseStream, Encoding.GetEncoding("gb2312")))
  469. {
  470. var content = sr.ReadToEnd();
  471. return content.Replace("\r\n", string.Empty).Trim();
  472. }
  473. }
  474. catch
  475. {
  476. }
  477. finally
  478. {
  479. if (responseStream != null)
  480. responseStream.Close();
  481. }
  482. return null;
  483. }
  484. /// <summary>
  485. /// 请求吉林11选5Url资源
  486. /// </summary>
  487. /// <param name="url">目标Url地址</param>
  488. /// <param name="postdata">传送数据</param>
  489. /// <returns></returns>
  490. public static string GetJL11X5UrlResponse(string url, string postdata)
  491. {
  492. Stream responseStream = null;
  493. try
  494. {
  495. HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
  496. request.Method = "POST";
  497. request.Timeout = 2 * 60 * 1000;
  498. request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36";
  499. request.Headers.Add("Accept-Encoding", "gzip, deflate, sdch");
  500. request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8");
  501. request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
  502. request.Referer = "http://jl.lottery.gov.cn/11x5.aspx";
  503. //CookieContainer container = new CookieContainer();
  504. //Cookie cookie = new Cookie("sid", "d4cc22d9-9b4c-49d0-8965-61e3fdbe8167", "/", "www.gstc.org.cn");
  505. //container.Add(cookie);
  506. //request.CookieContainer = container;
  507. byte[] bs = Encoding.UTF8.GetBytes(postdata);
  508. request.ContentLength = bs.Length;
  509. request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
  510. using (Stream requestStream = request.GetRequestStream())
  511. {
  512. requestStream.Write(bs, 0, bs.Length);
  513. }
  514. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  515. var contentencode = response.ContentEncoding;
  516. if (contentencode == "gzip")
  517. responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
  518. else
  519. responseStream = response.GetResponseStream();
  520. using (StreamReader sr = new StreamReader(responseStream, Encoding.UTF8))
  521. {
  522. var content = sr.ReadToEnd();
  523. return content.Replace("\r\n", string.Empty).Trim();
  524. }
  525. }
  526. catch
  527. {
  528. }
  529. finally
  530. {
  531. if (responseStream != null)
  532. responseStream.Close();
  533. }
  534. return null;
  535. }
  536. /// <summary>
  537. /// 从彩票控爬取山西快乐十分开奖资源
  538. /// </summary>
  539. /// <param name="url">彩票控地址</param>
  540. /// <returns></returns>
  541. public static string GetShanXiTaiYuanKL10FResource(string url)
  542. {
  543. Stream responseStream = null;
  544. try
  545. {
  546. HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
  547. request.Method = "GET";
  548. request.Timeout = 2 * 60 * 1000;
  549. request.Referer = "https://www.baidu.com/link?url=LlPuYDRBAgub8jzVvo8sugb4Js5-NQDPuKAGXZrc-UNS2AiizIzaKJC0C90Jh0rWEK7qargFxEp2lKxQwx1Vxa&wd=&eqid=abe817410018bc0a0000000557393f77";
  550. request.Host = "www.caipiaokong.com";
  551. request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
  552. request.Headers.Add("Accept-Encoding", "gzip, deflate, sdch");
  553. request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8");
  554. request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36";
  555. request.Headers.Add("Cache-Control", "max-age=0");
  556. request.Headers.Add("Upgrade-Insecure-Requests", "1");
  557. request.Headers.Add("Cookie", "BAIDU_SSP_lcr=https://www.baidu.com/link?url=LlPuYDRBAgub8jzVvo8sugb4Js5-NQDPuKAGXZrc-UNS2AiizIzaKJC0C90Jh0rWEK7qargFxEp2lKxQwx1Vxa&wd=&eqid=abe817410018bc0a0000000557393f77; __cfduid=d506c4c6a0c7f88d91869fa379b2cb1421462343508; caipiaokong_4891_saltkey=MsvISvSd; caipiaokong_4891_lastvisit=1462339908; caipiaokong_4891_caipiaokong_eNr=1; caipiaokong_4891_lastact=1463370823%09index.php%09shxklsf; Hm_lvt_1fa650cb7d8eae53d0e6fbd8aec3eb67=1463369580,1463369608,1463369847,1463370211; Hm_lpvt_1fa650cb7d8eae53d0e6fbd8aec3eb67=1463370839");
  558. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  559. var contentencode = response.ContentEncoding;
  560. if (contentencode == "gzip")
  561. responseStream = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);
  562. else
  563. responseStream = response.GetResponseStream();
  564. using (StreamReader sr = new StreamReader(responseStream, Encoding.GetEncoding("gb2312")))//.UTF8))
  565. {
  566. var content = sr.ReadToEnd();
  567. return content;
  568. }
  569. }
  570. catch
  571. {
  572. }
  573. finally
  574. {
  575. if (responseStream != null)
  576. responseStream.Close();
  577. }
  578. return string.Empty;
  579. }
  580. #endregion
  581. /// <summary>
  582. /// 保存网络图片
  583. /// </summary>
  584. /// <param name="ImageUrl">网络图片地址</param>
  585. /// <param name="SavePath">图片保存文件夹</param>
  586. /// <param name="SaveUrl">对应URL访问基础地址</param>
  587. /// <returns></returns>
  588. public static string SaveNetImage(string ImageUrl, string SavePath, string SaveUrl)
  589. {
  590. return SaveNetImage(ImageUrl, SavePath, SaveUrl, string.Empty);
  591. }
  592. /// <summary>
  593. /// 保存网络图片
  594. /// </summary>
  595. /// <param name="ImageUrl">网络图片地址</param>
  596. /// <param name="SavePath">图片保存文件夹</param>
  597. /// <param name="viewUrl">对应URL访问基础地址</param>
  598. /// <param name="FixFolderName">固定文件夹名(用于相同类型图片放在一个文件夹中,可空)</param>
  599. /// <returns></returns>
  600. public static string SaveNetImage(string ImageUrl, string SavePath, string viewUrl, string FixFolderName)
  601. {
  602. try
  603. {
  604. HttpWebRequest request = HttpWebRequest.Create(ImageUrl) as HttpWebRequest;
  605. request.Method = "GET";
  606. request.Timeout = 5000;
  607. request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36";
  608. request.KeepAlive = true;
  609. request.ProtocolVersion = HttpVersion.Version10;
  610. request.Headers.Add("Cookie", "__cfduid=d53136a7fdcb2c4c64f8ed24a66b32f251476954305");
  611. HttpWebResponse response = request.GetResponse() as HttpWebResponse;
  612. Image img = Image.FromStream(response.GetResponseStream());
  613. var today = DateTime.Now.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo);
  614. var saveFolder = Path.Combine(SavePath, today, FixFolderName);
  615. if (!Directory.Exists(saveFolder))
  616. {
  617. Directory.CreateDirectory(saveFolder);
  618. }
  619. var fileExt = Path.GetExtension(ImageUrl).ToLower();
  620. string[] imgExt = new string[] { ".gif", ".jpg", ".jpeg", ".png", ".bmp" };
  621. if (string.IsNullOrWhiteSpace(fileExt) || Array.IndexOf(imgExt, fileExt) == -1)
  622. fileExt = ".jpg";
  623. var savefile = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo) + fileExt;
  624. img.Save(Path.Combine(saveFolder, savefile));
  625. return UrlCombine(viewUrl, today, FixFolderName, savefile);
  626. }
  627. catch
  628. {
  629. }
  630. return string.Empty;
  631. }
  632. /// <summary>
  633. /// URL路径拼写
  634. /// </summary>
  635. /// <param name="paths">路径参数列表</param>
  636. /// <returns></returns>
  637. public static string UrlCombine(params string[] paths)
  638. {
  639. if (paths == null || paths.Length == 0)
  640. {
  641. throw new ArgumentNullException("paths");
  642. }
  643. StringBuilder sb = new StringBuilder();
  644. string item = string.Empty;
  645. for (int i = 0; i < paths.Length; i++)
  646. {
  647. item = paths[i];
  648. if (item == null)
  649. {
  650. throw new ArgumentNullException("paths");
  651. }
  652. if (item.Length != 0)
  653. {
  654. if (item.StartsWith("/"))
  655. item = item.Substring(1);
  656. if (item.IndexOf(".") != -1)
  657. {
  658. sb.Append(item);
  659. }
  660. else if (item.EndsWith("/"))
  661. sb.Append(item);
  662. else
  663. sb.Append(item + "/");
  664. }
  665. }
  666. return sb.ToString();
  667. }
  668. }
  669. }