1754 lines
74 KiB
C#
1754 lines
74 KiB
C#
using NaiBa.Util.Extension;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Globalization;
|
|
using System.IO;
|
|
using System.IO.Compression;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Security.Cryptography;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
using System.Threading;
|
|
|
|
namespace AllBase
|
|
{
|
|
public class GetProxyHtml
|
|
{
|
|
private static string headerKey = "Authorization";
|
|
public static string ProxyIpKey = "proxy_ip_pingduoduo";
|
|
|
|
public static WebProxy proxyObject;
|
|
|
|
public static List<string> ips = new List<string>();
|
|
|
|
public static string txtUrl = "";// "http://125.88.158.218:1800/ip/list/line/test001";
|
|
|
|
public static string orderId = "";
|
|
|
|
public static int loopCount = 15;
|
|
|
|
public static int jinbaoCount = 8;
|
|
|
|
public static int ipCount = 8;
|
|
|
|
public static int oldindex = -1;
|
|
|
|
public static List<string> UserAgentList = new List<string>();
|
|
public static List<string> LastIpList { get; set; } // 上一次获取的所有IP,用来判断本次获取是否是重复的
|
|
|
|
public static int IpIndex { get; set; }
|
|
public static string[] IpList { get; set; }
|
|
|
|
private static bool IsInit()
|
|
{
|
|
if (IpList == null || IpList.Length == 0 || IpIndex > IpList.Length - 1)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static DateTime lastGetTime = DateTime.Now;
|
|
public static void Init() // 火箭ip获取
|
|
{
|
|
while (lastGetTime.AddSeconds(4) > DateTime.Now)
|
|
{
|
|
Thread.Sleep(50 + Randomx.GetId(100));
|
|
}
|
|
lastGetTime = DateTime.Now;
|
|
|
|
IpIndex = 0;
|
|
string proxyIpHtml = UploadTaobaoPost(txtUrl, "", true, "", false, "");//http://125.88.158.218:1800/ip/list/test/4185_158905271 http://125.88.158.218:1800/ip/list/line/test001
|
|
int tryTimes = 0;
|
|
int maxTryTimes = 10;
|
|
while (true && tryTimes <= maxTryTimes)
|
|
{
|
|
if (!string.IsNullOrEmpty(proxyIpHtml))
|
|
{
|
|
ips = proxyIpHtml.Split(new string[] { "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries).Select(p => p.Trim()).ToList();
|
|
if (LastIpList == null || LastIpList.Count == 0)
|
|
{
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
// 确保本次获取的ip和上一次的不一样
|
|
if (LastIpList.Where(p => ips.Contains(p)).Count() != LastIpList.Count)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (proxyIpHtml.Contains("远程服务器返回错误: (888)"))
|
|
break;
|
|
tryTimes++;
|
|
Thread.Sleep(1000);
|
|
}
|
|
CloseIp(LastIpList);
|
|
if (ips != null)
|
|
{
|
|
LastIpList = ips;
|
|
IpList = ips.ToArray();
|
|
}
|
|
}
|
|
public static WebProxy GetIPSProxyQueue()
|
|
{
|
|
if (string.IsNullOrEmpty(txtUrl))
|
|
return null;
|
|
int AgainCount = 0;
|
|
Again:
|
|
if (IsInit())
|
|
{
|
|
Init();
|
|
}
|
|
if (IpList.Length == 0)
|
|
{
|
|
if (AgainCount < 2)
|
|
{
|
|
AgainCount++;
|
|
Thread.Sleep(50);
|
|
goto Again;
|
|
}
|
|
}
|
|
WebProxy webProxy = null;
|
|
if (IpList.Length == 0)
|
|
return webProxy;
|
|
string ip = IpList[IpIndex];
|
|
string[] ipArr = ip.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
|
|
switch (ipArr.Length)
|
|
{
|
|
case 2:
|
|
webProxy = new WebProxy(ipArr[0], ipArr[1].ParseToInt());
|
|
break;
|
|
|
|
case 4:
|
|
webProxy = new WebProxy(ipArr[0], ipArr[1].ParseToInt());
|
|
webProxy.Credentials = new NetworkCredential(ipArr[2], ipArr[3]);
|
|
break;
|
|
}
|
|
return webProxy;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取火箭IP
|
|
/// </summary>
|
|
/// <param name="message"></param>
|
|
/// <returns></returns>
|
|
public static WebProxy GetIPSProxyQueue(out string message)
|
|
{
|
|
message = "";
|
|
if (string.IsNullOrEmpty(txtUrl))
|
|
return null;
|
|
int AgainCount = 0;
|
|
Again:
|
|
if (IsInit())
|
|
{
|
|
Init();
|
|
}
|
|
if (IpList.Length == 0)
|
|
{
|
|
if (AgainCount < 1)
|
|
{
|
|
AgainCount++;
|
|
Thread.Sleep(50);
|
|
goto Again;
|
|
}
|
|
}
|
|
WebProxy webProxy = null;
|
|
if (IpList.Length == 0)
|
|
return webProxy;
|
|
string ip = IpList[IpIndex];
|
|
string[] ipArr = ip.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
|
|
switch (ipArr.Length)
|
|
{
|
|
case 2:
|
|
webProxy = new WebProxy(ipArr[0], ipArr[1].ParseToInt());
|
|
break;
|
|
|
|
case 4:
|
|
webProxy = new WebProxy(ipArr[0], ipArr[1].ParseToInt());
|
|
webProxy.Credentials = new NetworkCredential(ipArr[2], ipArr[3]);
|
|
break;
|
|
}
|
|
if (ip.Contains("远程服务器返回错误: (888)"))
|
|
message = "888";
|
|
return webProxy;
|
|
}
|
|
public static void GetIPS()
|
|
{
|
|
if (string.IsNullOrEmpty(txtUrl))
|
|
return;
|
|
string htmlx = UploadTaobaoPost(txtUrl, "", true, "", false, "");
|
|
List<string> striparr = htmlx.Split(new string[] { "\r\n" }, StringSplitOptions.None).ToList();
|
|
striparr = striparr.Where(s => !string.IsNullOrEmpty(s)).ToList();
|
|
if (striparr.Count < 5)
|
|
return;
|
|
ips = striparr;
|
|
}
|
|
public static void GetIPSProxy()
|
|
{
|
|
if (string.IsNullOrEmpty(txtUrl))
|
|
return;
|
|
string htmlx = UploadTaobaoPost(txtUrl, "", true, "", false, "");
|
|
List<string> striparr = htmlx.Split('\n').ToList();
|
|
striparr = striparr.Where(s => !string.IsNullOrEmpty(s)).ToList();
|
|
if (striparr.Count < 5)
|
|
return;
|
|
ips = striparr;
|
|
}
|
|
public static List<string> GetIPSProxyObject()
|
|
{
|
|
if (string.IsNullOrEmpty(txtUrl))
|
|
return null;
|
|
string htmlx = UploadTaobaoPost(txtUrl, "", true, "", false, "");
|
|
List<string> striparr = htmlx.Split('\n').ToList();
|
|
striparr = striparr.Where(s => !string.IsNullOrEmpty(s)).ToList();
|
|
if (striparr.Count < 5)
|
|
return null;
|
|
return striparr;
|
|
}
|
|
public static string RequestUrl_TaoBao_com(long lProdId, string uri, string[] UserAgentListout, out bool IsOverdue)
|
|
{
|
|
IsOverdue = false;
|
|
int count = 0;
|
|
try
|
|
{
|
|
Again:
|
|
count++;
|
|
HttpWebResponse response = null;
|
|
try
|
|
{
|
|
//string UserAgentTemp = UserAgentList[new Random().Next(UserAgentList.Count())];
|
|
//if (!string.IsNullOrEmpty(UserAgentTemp) && !UserAgentTemp.Contains("MicroMessenger"))
|
|
//{
|
|
// UserAgentTemp = UserAgentTemp.Insert(new Random().Next(UserAgentTemp.Length), "MicroMessenger" + Guid.NewGuid().ToString().Replace("-", "").Substring(0, new Random().Next(5)));
|
|
//}
|
|
//HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://goods.66daili.cn/api/goods/taobao-api/?orderid=" + GetProxyHtml.orderId + "&token=5AF433ED506FA475&goodID=" + lProdId);
|
|
//HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://ecdata-api.66daili.cn/api/ecdata/taobao/detail/?orderid=" + GetProxyHtml.orderId + "&token=5AF433ED506FA475&itemID=" + lProdId);
|
|
//HttpWebRequest request = (HttpWebRequest)WebRequest.Create($"http://ecdata-api.66daili.cn/ecdata/api/detail/?orderid={orderId}&token=5AF433ED506FA475&itemID={lProdId}");
|
|
//HttpWebRequest request = (HttpWebRequest)WebRequest.Create($"http://ec-private.66daili.cn/api/private/detail/?orderid={orderId}&token=5AF433ED506FA475&item_id={lProdId}");
|
|
HttpWebRequest request = (HttpWebRequest)WebRequest.Create($"http://ecdata-api.66daili.cn/api/common/vip/get/?orderid={orderId}&token=5AF433ED506FA475&item_id={lProdId}");
|
|
request.Timeout = 7000;
|
|
request.KeepAlive = true;
|
|
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9,en;q=0.8");
|
|
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
|
|
request.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
|
|
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36";
|
|
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
|
|
response = (HttpWebResponse)request.GetResponse();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
}
|
|
if (response != null)
|
|
{
|
|
string result = ReadResponse(response);
|
|
result = UnicodeDecode(result);
|
|
//return result;
|
|
if (result.Contains("order expire or not exist") || result.Contains("orderid empty"))
|
|
{
|
|
IsOverdue = true;
|
|
return "";
|
|
}
|
|
if (result.Contains("categoryId") || result.Contains("\"dataType\": \"v") || result.Contains("调用成功"))
|
|
{
|
|
return UnicodeDecode(result);
|
|
}
|
|
if (result.Contains("mtop.taobao.detail.getdesc"))
|
|
{
|
|
return result;
|
|
}
|
|
else
|
|
{
|
|
if (count < 100)
|
|
{
|
|
SleepCommon();
|
|
goto Again;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (count < 100)
|
|
{
|
|
SleepCommon();
|
|
goto Again;
|
|
}
|
|
}
|
|
return "";
|
|
}
|
|
catch
|
|
{
|
|
return "";
|
|
}
|
|
}
|
|
public static ProxyTypeEnum GetProxyType(string proxyUrl)
|
|
{
|
|
ProxyTypeEnum proxyType = ProxyTypeEnum.Unknown;
|
|
proxyUrl = proxyUrl.ParseToString().Trim();
|
|
if (proxyUrl.Contains("125.88.158.218"))
|
|
{
|
|
proxyType = ProxyTypeEnum.RocketDaiLi;
|
|
}
|
|
else if (proxyUrl.Contains("66daili.cn"))
|
|
{
|
|
proxyType = ProxyTypeEnum.SixSixDaiLi;
|
|
}
|
|
else if (proxyUrl.Contains("kdlapi.com"))
|
|
{
|
|
proxyType = ProxyTypeEnum.KuaiDaiLi;
|
|
}
|
|
return proxyType;
|
|
}
|
|
|
|
private static List<string> listIp = new List<string>();
|
|
private static int UseCount = 0;
|
|
private static readonly object obj = new object();
|
|
public static string Request_yangkeduo_com(string sIpAndPort, long lProdId, string[] UserAgentList, out bool IsOverdue, bool IsBreak = false)
|
|
{
|
|
IsOverdue = false;
|
|
int count = 0;
|
|
try
|
|
{
|
|
if (IsBreak)
|
|
{
|
|
return "";
|
|
}
|
|
if (UseCount >= 50 && listIp.Count > 0)//代理ip 使用超过150次 才去请求一次ip
|
|
{
|
|
listIp.Clear();
|
|
}
|
|
Again:
|
|
lock (obj)
|
|
{
|
|
if (listIp.Count() <= 0)
|
|
{
|
|
listIp = InitIp(sIpAndPort, out IsOverdue);
|
|
UseCount = 0;
|
|
}
|
|
}
|
|
if (IsOverdue)
|
|
{
|
|
return "";
|
|
}
|
|
string ProxyIP = listIp[new Random().Next(0, listIp.Count)];
|
|
UseCount++;
|
|
count++;
|
|
HttpWebResponse response = null;
|
|
try
|
|
{
|
|
string UserAgentTemp = UserAgentList[new Random().Next(UserAgentList.Count())];
|
|
if (!string.IsNullOrEmpty(UserAgentTemp) && !UserAgentTemp.Contains("MicroMessenger"))
|
|
{
|
|
UserAgentTemp = UserAgentTemp.Insert(new Random().Next(UserAgentTemp.Length), "MicroMessenger" + Guid.NewGuid().ToString().Replace("-", "").Substring(0, new Random().Next(5)));
|
|
}
|
|
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://mobile.yangkeduo.com/goods.html?goods_id=" + lProdId);
|
|
request.Timeout = 5000;
|
|
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9,en;q=0.8");
|
|
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
|
|
request.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
|
|
request.UserAgent = UserAgentTemp;
|
|
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "deflate");
|
|
System.Net.WebProxy proxy = GetWebProxy(ProxyIP);
|
|
request.Proxy = proxy;
|
|
response = (HttpWebResponse)request.GetResponse();
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
}
|
|
if (response != null)
|
|
{
|
|
string result = ReadResponse(response);
|
|
if (result.Contains("mallID"))
|
|
{
|
|
return UnicodeDecode(result);
|
|
}
|
|
if (result.Contains("runtime error: index out of range [1] with length 0"))
|
|
{
|
|
return "runtime error: index out of range [1] with length 0";
|
|
}
|
|
else
|
|
{
|
|
if (count <3)
|
|
{
|
|
SleepCommon();
|
|
goto Again;
|
|
}
|
|
if (count==3)
|
|
{
|
|
SleepCommon();
|
|
listIp.Clear();
|
|
goto Again;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (count<3)
|
|
{
|
|
SleepCommon();
|
|
goto Again;
|
|
}
|
|
if (count == 3)
|
|
{
|
|
SleepCommon();
|
|
listIp.Clear();
|
|
goto Again;
|
|
}
|
|
}
|
|
return "";
|
|
}
|
|
catch(Exception ex)
|
|
{
|
|
return "";
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// SHA1字符串加密
|
|
/// </summary>
|
|
/// <param name="input">需要加密字符串</param>
|
|
/// <returns>返回40位大写字符串</returns>
|
|
private static string SHA1(string input)
|
|
{
|
|
try
|
|
{
|
|
using (System.Security.Cryptography.SHA1CryptoServiceProvider sha1 = new System.Security.Cryptography.SHA1CryptoServiceProvider())
|
|
{
|
|
string result = "";
|
|
byte[] btInput = System.Text.Encoding.UTF8.GetBytes(input);
|
|
byte[] btOut = sha1.ComputeHash(btInput);
|
|
for (int i = 0; i < btOut.Length; i++)
|
|
{
|
|
result += btOut[i].ToString("x2");
|
|
}
|
|
return result;
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
throw;
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Base64加密
|
|
/// </summary>
|
|
/// <param name="encodeType">加密采用的编码方式</param>
|
|
/// <param name="source">待加密的明文</param>
|
|
/// <returns></returns>
|
|
private static string Base64Encode(Encoding encodeType, string source)
|
|
{
|
|
string encode = string.Empty;
|
|
byte[] bytes = encodeType.GetBytes(source);
|
|
try
|
|
{
|
|
encode = Convert.ToBase64String(bytes);
|
|
}
|
|
catch
|
|
{
|
|
encode = source;
|
|
}
|
|
return encode;
|
|
}
|
|
public static string RequestUrl_yangkeduo_com(long lProdId, string[] UserAgentListout, out bool IsOverdue)
|
|
{
|
|
IsOverdue = false;
|
|
int count = 0;
|
|
try
|
|
{
|
|
Again:
|
|
count++;
|
|
string token = "5AF433ED506FA475";
|
|
HttpWebResponse response = null;
|
|
try
|
|
{
|
|
//string UserAgentTemp = UserAgentList[new Random().Next(UserAgentList.Count())];
|
|
//if (!string.IsNullOrEmpty(UserAgentTemp) && !UserAgentTemp.Contains("MicroMessenger"))
|
|
//{
|
|
// UserAgentTemp = UserAgentTemp.Insert(new Random().Next(UserAgentTemp.Length), "MicroMessenger" + Guid.NewGuid().ToString().Replace("-", "").Substring(0, new Random().Next(5)));
|
|
//}
|
|
//HttpWebRequest request = (HttpWebRequest)WebRequest.Create($"http://mobile.yangkeduo.com/goods.html?goods_id={lProdId}");
|
|
//HttpWebRequest request = (HttpWebRequest)WebRequest.Create($"http://ec-api.66daili.cn/api/ecdata/pdd/detail/?orderid={orderId}&token={token}&goodid={lProdId}");
|
|
HttpWebRequest request = (HttpWebRequest)WebRequest.Create($"http://ec-api.66daili.cn/api/common/async/detail?orderid={orderId}&token={token}&goodid={lProdId}");
|
|
request.Timeout = 7000;
|
|
//request.Proxy = new WebProxy("ytunnel.66daili.cn", 23313);
|
|
//string sign = SHA1($"{lProdId}|{orderId}|{BaseClass.ProxyToken}|66yitu");
|
|
//request.Headers.Add("x-sign", sign);
|
|
//request.Headers.Add("Proxy-Authorization", "Basic " + Base64Encode(Encoding.UTF8, $"{orderId}:{BaseClass.ProxyToken}"));
|
|
request.KeepAlive = true;
|
|
request.Headers.Set(HttpRequestHeader.CacheControl, "max-age=0");
|
|
request.Headers.Add("Upgrade-Insecure-Requests", @"1");
|
|
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36";
|
|
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9";
|
|
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
|
|
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
|
|
response = (HttpWebResponse)request.GetResponse();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
}
|
|
if (response != null)
|
|
{
|
|
string result = ReadResponse(response);
|
|
if (result.Contains("order expire or not exist"))
|
|
{
|
|
IsOverdue = true;
|
|
return "";
|
|
}
|
|
if (result.Contains("mall_id") || result.Contains("mallId") || result.Contains("mallID"))
|
|
{
|
|
return UnicodeDecode(result);
|
|
}
|
|
else
|
|
{
|
|
if (count < 50)
|
|
{
|
|
SleepCommon();
|
|
goto Again;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (count < 20)
|
|
{
|
|
SleepCommon();
|
|
goto Again;
|
|
}
|
|
}
|
|
return "";
|
|
}
|
|
catch
|
|
{
|
|
return "";
|
|
}
|
|
}
|
|
public static void SleepCommon(int number = 100)
|
|
{
|
|
Thread.Sleep(number / 2 + Randomx.GetId(number));
|
|
}
|
|
private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
|
|
public static string DESDecode(string source, string sKey)
|
|
{
|
|
try
|
|
{
|
|
byte[] inputByteArray = System.Convert.FromBase64String(source);//Encoding.UTF8.GetBytes(source);
|
|
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
|
|
{
|
|
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
|
|
des.IV = Keys;
|
|
System.IO.MemoryStream ms = new System.IO.MemoryStream();
|
|
using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
|
|
{
|
|
cs.Write(inputByteArray, 0, inputByteArray.Length);
|
|
cs.FlushFinalBlock();
|
|
cs.Close();
|
|
}
|
|
string str = Encoding.UTF8.GetString(ms.ToArray());
|
|
ms.Close();
|
|
return str;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return "";
|
|
}
|
|
}
|
|
public static WebProxy GetOne66Ip(string FormName = "")
|
|
{
|
|
var IsOverdue = false;
|
|
lock (obj)
|
|
{
|
|
Thread.Sleep(500);
|
|
if (listIp.Count() <= 0)
|
|
{
|
|
Thread.Sleep(3000);
|
|
listIp = InitIp(GetProxyHtml.txtUrl, out IsOverdue);
|
|
if (IsOverdue)
|
|
{
|
|
LogSave.Add(FormName, "代理Ip过期或套餐不存在");
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
if (listIp.Count > 0)
|
|
{
|
|
string ProxyIP = listIp[0];
|
|
listIp.Remove(listIp[0]);
|
|
return GetWebProxy(ProxyIP);
|
|
}
|
|
return null;
|
|
}
|
|
/// <summary>
|
|
/// 66代理ip获取
|
|
/// </summary>
|
|
/// <param name="ProxyUrl"></param>
|
|
/// <param name="IsOverdue"></param>
|
|
/// <returns></returns>
|
|
public static List<string> InitIp(string ProxyUrl, out bool IsOverdue)
|
|
{
|
|
IsOverdue = false;
|
|
if (listIp.Count > 0)
|
|
{
|
|
return listIp;
|
|
}
|
|
HttpParam httpParm = new HttpParam { Url = ProxyUrl };
|
|
SetAuthorization(httpParm);
|
|
string proxyIpHtml = string.Empty;
|
|
List<string> proxyIpList = new List<string>();
|
|
int tryTimes = 0;
|
|
int maxTryTimes = 3;
|
|
while (true && tryTimes <= maxTryTimes)
|
|
{
|
|
proxyIpHtml = GetUtf8(httpParm);
|
|
if (proxyIpHtml.Contains("过期") || proxyIpHtml.Contains("套餐不存在"))
|
|
{
|
|
IsOverdue = true;
|
|
break;
|
|
}
|
|
if (!string.IsNullOrEmpty(proxyIpHtml) && !proxyIpHtml.Contains("后获取") && !proxyIpHtml.Contains("过期") && !proxyIpHtml.Contains("套餐不存在"))
|
|
{
|
|
proxyIpList = proxyIpHtml.Split(new string[] { "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries).Select(p => p.Trim()).ToList();
|
|
break;
|
|
}
|
|
tryTimes++;
|
|
Thread.Sleep(3000);
|
|
}
|
|
return proxyIpList;
|
|
}
|
|
public static void SetAuthorization(HttpParam httpParam)
|
|
{
|
|
if (httpParam.Header == null)
|
|
{
|
|
httpParam.Header = new Dictionary<string, string>();
|
|
}
|
|
long timeStamp = GetUnixSecondTimeStamp(DateTime.Now) + BaseClass.TimeDifferent;
|
|
string hexadecimalTimeStamp = timeStamp.ToString("X");
|
|
string token = HMACSHA256(hexadecimalTimeStamp, ProxyIpKey).ToUpper();
|
|
AddHeader(httpParam, headerKey, string.Format("{0}|{1}", hexadecimalTimeStamp, token));
|
|
}
|
|
public static void AddHeader(HttpParam httpParam, string key, string value)
|
|
{
|
|
if (httpParam.Header == null)
|
|
{
|
|
httpParam.Header = new Dictionary<string, string>();
|
|
}
|
|
httpParam.Header.Remove(key);
|
|
httpParam.Header.Add(key, value);
|
|
}
|
|
|
|
|
|
public static string GetUtf8(HttpParam param)
|
|
{
|
|
if (string.IsNullOrEmpty(param.Url))
|
|
{
|
|
return string.Empty;
|
|
}
|
|
try
|
|
{
|
|
WebClient webClient = GetWebClient(param);
|
|
byte[] b = webClient.DownloadData(param.Url);
|
|
return Encoding.UTF8.GetString(b);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return string.Empty;
|
|
}
|
|
}
|
|
public static WebClientx GetWebClient(HttpParam param)
|
|
{
|
|
using (WebClientx webClient = new WebClientx())
|
|
{
|
|
if (param.Proxy != null)
|
|
{
|
|
webClient.Proxy = param.Proxy;
|
|
}
|
|
if (param.Timeout > 0)
|
|
{
|
|
webClient.Timeout = param.Timeout;
|
|
}
|
|
else
|
|
{
|
|
webClient.Timeout = 60;
|
|
}
|
|
if (string.IsNullOrEmpty(param.Accept))
|
|
{
|
|
webClient.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
|
|
}
|
|
else
|
|
{
|
|
webClient.Headers.Add("Accept", param.Accept);
|
|
}
|
|
if (string.IsNullOrEmpty(param.ContentType))
|
|
{
|
|
webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
|
|
}
|
|
else
|
|
{
|
|
webClient.Headers.Add("Content-Type", param.ContentType);
|
|
}
|
|
if (string.IsNullOrEmpty(param.AcceptLanguage))
|
|
{
|
|
webClient.Headers.Add("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8");
|
|
}
|
|
else
|
|
{
|
|
webClient.Headers.Add("Accept-Language", param.AcceptLanguage);
|
|
}
|
|
if (string.IsNullOrEmpty(param.UserAgent))
|
|
{
|
|
webClient.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36");
|
|
}
|
|
else
|
|
{
|
|
webClient.Headers.Add("User-Agent", param.UserAgent);
|
|
}
|
|
if (!string.IsNullOrEmpty(param.Referer))
|
|
{
|
|
webClient.Headers.Add("Referer", param.Referer);
|
|
}
|
|
webClient.Headers.Remove("Cookie");
|
|
if (!string.IsNullOrEmpty(param.Cookie))
|
|
{
|
|
webClient.Headers.Add("Cookie", param.Cookie);
|
|
}
|
|
if (param.Header != null)
|
|
{
|
|
foreach (string key in param.Header.Keys)
|
|
{
|
|
webClient.Headers.Add(key, param.Header[key]);
|
|
}
|
|
}
|
|
return webClient;
|
|
}
|
|
}
|
|
public static WebProxy GetWebProxy(string ip = "")
|
|
{
|
|
WebProxy webProxy = null;
|
|
try
|
|
{
|
|
if (!string.IsNullOrEmpty(ip))
|
|
{
|
|
string[] ipArr = ip.Split(new string[] { " ", ":" }, StringSplitOptions.RemoveEmptyEntries);
|
|
switch (ipArr.Length)
|
|
{
|
|
case 2:
|
|
webProxy = new WebProxy(ipArr[0], ipArr[1].ParseToInt());
|
|
break;
|
|
|
|
case 4:
|
|
webProxy = new WebProxy(ipArr[0], ipArr[1].ParseToInt());
|
|
webProxy.Credentials = new NetworkCredential(ipArr[2], ipArr[3]);
|
|
break;
|
|
}
|
|
return webProxy;
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
}
|
|
return webProxy;
|
|
}
|
|
public static string ReadResponse(HttpWebResponse response)
|
|
{
|
|
using (Stream responseStream = response.GetResponseStream())
|
|
{
|
|
Stream streamToRead = responseStream;
|
|
if (response.ContentEncoding.ToLower().Contains("gzip"))
|
|
{
|
|
streamToRead = new GZipStream(streamToRead, CompressionMode.Decompress);
|
|
}
|
|
else if (response.ContentEncoding.ToLower().Contains("deflate"))
|
|
{
|
|
streamToRead = new DeflateStream(streamToRead, CompressionMode.Decompress);
|
|
}
|
|
|
|
using (StreamReader streamReader = new StreamReader(streamToRead, Encoding.UTF8))
|
|
{
|
|
return streamReader.ReadToEnd();
|
|
}
|
|
}
|
|
}
|
|
public static string UnicodeDecode(string html)
|
|
{
|
|
html = WebUtility.HtmlDecode(html);
|
|
|
|
Regex reUnicode = new Regex(@"\\u([0-9a-fA-F]{4})", RegexOptions.Compiled);
|
|
return reUnicode.Replace(html, m =>
|
|
{
|
|
short c;
|
|
if (short.TryParse(m.Groups[1].Value, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out c))
|
|
{
|
|
return "" + (char)c;
|
|
}
|
|
return m.Value;
|
|
});
|
|
}
|
|
public static void CloseIp(List<string> ipList)
|
|
{
|
|
ProxyTypeEnum proxyType = GetProxyType(txtUrl);
|
|
if (proxyType == ProxyTypeEnum.RocketDaiLi)
|
|
{
|
|
if (ipList != null && ipList.Any())
|
|
{
|
|
try
|
|
{
|
|
Uri uri = new Uri(txtUrl);
|
|
string url = string.Format("{0}://{1}:{2}", uri.Scheme, uri.Host, uri.Port);
|
|
string userName = uri.Segments[uri.Segments.Length - 1];
|
|
string ip = ipList.FirstOrDefault().Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)[0];
|
|
int[] portArr = ipList.Select(p => p.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries)[1].ParseToInt()).ToArray();
|
|
|
|
string URL = url + "/ip/list/close";
|
|
string PostData = JsonConvert.SerializeObject(new { userName = userName, ip = ip, ports = JsonConvert.SerializeObject(portArr) });
|
|
//ContentType = "application/json; charset=UTF-8";
|
|
string html = UploadTaobaoPost(URL,URL,true, PostData,false,"");
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static bool CheckProxyStatus(out string message)
|
|
{
|
|
bool isProxyAvailable = true;
|
|
message = "";
|
|
try
|
|
{
|
|
if (!string.IsNullOrEmpty(txtUrl))
|
|
{
|
|
ProxyTypeEnum proxyType = GetProxyType(txtUrl);
|
|
if (proxyType == ProxyTypeEnum.RocketDaiLi)
|
|
{
|
|
Uri uri = new Uri(txtUrl);
|
|
string url = string.Format("{0}://{1}:{2}", uri.Scheme, uri.Host, uri.Port);
|
|
string userName = uri.Segments[uri.Segments.Length - 1];
|
|
string Url = url + "/user/info/" + userName;
|
|
string html = UploadTaobaoPost(Url, "", true, "", false, "");
|
|
if (!string.IsNullOrEmpty(html))
|
|
{
|
|
JObject json = JObject.Parse(html);
|
|
long timeStamp = GetUnixSecondTimeStamp(DateTime.Now) + BaseClass.TimeDifferent;
|
|
long validity = json["user"]["validity"].ParseToString().ParseToLong();
|
|
if (validity > 0 && timeStamp > validity)
|
|
{
|
|
isProxyAvailable = false;
|
|
message = "代理ip已过期";
|
|
}
|
|
else
|
|
{
|
|
var proxyObject = GetProxyHtml.GetIPSProxyQueue(out message);
|
|
if (proxyObject == null)
|
|
{
|
|
isProxyAvailable = false;
|
|
if (message.Contains("888"))
|
|
message = "当前电脑ip不在代理ip白名单内,请到网页后台白名单管理中设置。";
|
|
else
|
|
message = "未获取到代理ip";
|
|
}
|
|
else
|
|
{
|
|
int httpStatus = GetJsonPostStatus(txtUrl);
|
|
if (httpStatus == 888)
|
|
{
|
|
CloseIp(LastIpList);
|
|
isProxyAvailable = false;
|
|
message = "当前电脑ip不在代理ip白名单内,请到网页后台白名单管理中设置。";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
return isProxyAvailable;
|
|
}
|
|
|
|
public static WebProxy GetNewWebProxy(string ip)
|
|
{
|
|
//if (ips.Count == 0)
|
|
// return null;
|
|
//Random ra = new Random(Guid.NewGuid().GetHashCode());
|
|
//int index = ra.Next(ips.Count);
|
|
//if (index == oldindex)
|
|
//{
|
|
// index = index + 1;
|
|
// if (index >= ips.Count)
|
|
// index = 0;
|
|
//}
|
|
//oldindex = index;
|
|
//string ip = ips[ra.Next(ips.Count)];
|
|
if (string.IsNullOrEmpty(ip))
|
|
return null;
|
|
string[] address = Regex.Split(ip, "\\s+", RegexOptions.IgnoreCase);
|
|
var proxyObject = new WebProxy(address[0], int.Parse(address[1]));
|
|
string sUserName = address[2];
|
|
string sPwd = address[3];
|
|
proxyObject.Credentials = new NetworkCredential(sUserName, sPwd);
|
|
return proxyObject;
|
|
}
|
|
|
|
public static WebProxy GetWebProxy()
|
|
{
|
|
if (ips.Count == 0)
|
|
return null;
|
|
Random ra = new Random(Guid.NewGuid().GetHashCode());
|
|
string ip = ips[ra.Next(ips.Count)];
|
|
if (!ip.Contains(":"))
|
|
return null;
|
|
string[] address = ip.Split(':');
|
|
proxyObject = new WebProxy(address[0], int.Parse(address[1]));
|
|
return proxyObject;
|
|
}
|
|
|
|
public static string UploadNewProxyTaobao(string url, string refere, bool isUtf8, string cookies, WebProxy proxyObject)
|
|
{
|
|
return UploadTaobaoNewPost(url, refere, isUtf8, "", false, cookies, proxyObject);
|
|
}
|
|
public static string UploadNewProxyTaobaoPost(string url, string refere, bool isUtf8, string data, string cookies, WebProxy proxyObject)
|
|
{
|
|
//GetNewWebProxy();
|
|
//if (proxyObject == null)
|
|
// return "";
|
|
return UploadTaobaoPost(url, refere, isUtf8, data, false, cookies, proxyObject);
|
|
}
|
|
|
|
public static string UploadProxyTaobao(string url, string refere, bool isUtf8, string cookies)
|
|
{
|
|
GetWebProxy();
|
|
if (proxyObject == null)
|
|
return "";
|
|
return UploadTaobaoPost(url, refere, isUtf8, "", false, cookies, proxyObject);
|
|
}
|
|
public static string UploadProxyTaobaoPost(string url, string refere, bool isUtf8, string data, string cookies)
|
|
{
|
|
GetWebProxy();
|
|
if (proxyObject == null)
|
|
return "";
|
|
return UploadTaobaoPost(url, refere, isUtf8, data, false, cookies, proxyObject);
|
|
}
|
|
|
|
public static string GetHtmlUrl(string url)
|
|
{
|
|
try
|
|
{
|
|
GetWebProxy();
|
|
if (proxyObject == null)
|
|
return "";
|
|
string userAgen = "android Mozilla/5.0 (Linux; Android 4.4.2; HUAWEI MLA-AL10 Build/HUAWEIMLA-AL10) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 phh_android_version/3.23.0 phh_android_build/228842 phh_android_channel/qihu360";
|
|
WebClientx web = new WebClientx();
|
|
web.Headers.Add("Accept", "*/*");
|
|
web.Headers.Add("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
|
|
web.Headers.Add("User-Agent", userAgen);
|
|
web.Headers.Add("Referer", url);
|
|
string h = web.Headers.ToString();
|
|
web.Proxy = proxyObject;
|
|
byte[] b = web.DownloadData(url);
|
|
return Encoding.UTF8.GetString(b);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
return "";
|
|
}
|
|
}
|
|
|
|
public static string UploadTaobaoPost(string url, string refere, bool isUtf8, string data, bool isPost,
|
|
string cookies, WebProxy proxyObject)
|
|
{
|
|
bool againt = false;
|
|
try
|
|
{
|
|
cookies = GetCookies(url, cookies);
|
|
if (string.IsNullOrEmpty(cookies))
|
|
cookies = BaseClass.ChromeCookies;
|
|
string pdd = "";
|
|
if (!string.IsNullOrEmpty(cookies))
|
|
pdd = BaseRegex.GetMatchRegexString(ref cookies, "PDDAccessToken=([^;]+?);");
|
|
string pddx = "";
|
|
if (!string.IsNullOrEmpty(cookies))
|
|
pddx = BaseRegex.GetMatchRegexString(ref cookies, "PASS_ID=([^;]+?);");
|
|
Againt:
|
|
string userAgent = BaseClass.ChromeUserAgent;
|
|
WebClientx wb = new WebClientx();
|
|
wb.Timeout = 3;
|
|
wb.AllowAutoRedirect = true;
|
|
wb.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
|
|
wb.Headers.Add("Accept-Encoding", "gzip,deflate");
|
|
wb.Headers.Add("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
|
|
wb.Headers.Add("User-Agent", userAgent);
|
|
wb.Proxy = null;
|
|
if (!string.IsNullOrEmpty(refere))
|
|
wb.Headers.Add("Referer", refere);
|
|
if (!string.IsNullOrEmpty(cookies))
|
|
wb.Headers.Add("Cookie", cookies);
|
|
wb.Proxy = proxyObject;
|
|
string rehead = wb.Headers.ToString();
|
|
var encode = isUtf8 ? Encoding.UTF8 : Encoding.GetEncoding("gbk");
|
|
byte[] b, postData = encode.GetBytes(data);
|
|
string html, head;
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(data) && !isPost)
|
|
{
|
|
b = wb.DownloadData(url);
|
|
}
|
|
else
|
|
{
|
|
if (isPost || url.Contains("taobao.com"))
|
|
{
|
|
wb.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
|
|
}
|
|
else
|
|
{
|
|
wb.Headers.Add("Content-Type", "application/json; charset=" + (isUtf8 ? "UTF-8" : "gbk"));
|
|
}
|
|
wb.Headers.Add("ContentLength", postData.Length.ToString());
|
|
b = wb.UploadData(url, "POST", postData);
|
|
}
|
|
html = encode.GetString(b);
|
|
|
|
string c = BaseRegex.GetMatchRegexString(wb.ResponseHeaders["Content-Type"], "charset\\s*=\\s*(\\S+)");
|
|
if (!string.IsNullOrEmpty(c))
|
|
{
|
|
c = c.Trim().ToLower().Replace("utf8", "utf-8");
|
|
}
|
|
if (string.IsNullOrEmpty(c))
|
|
c = BaseRegex.GetMatchRegexString(html, @"<meta [^>]*?charset=[""']*([\w-]+)[""']*");
|
|
if (!string.IsNullOrEmpty(c))
|
|
{
|
|
if (c.IndexOf("'") > -1)
|
|
c = c.Substring(0, c.IndexOf("'"));
|
|
if (c.IndexOf("\"") > -1)
|
|
c = c.Substring(0, c.IndexOf("\""));
|
|
if (c.IndexOf(" ") > -1)
|
|
c = c.Substring(0, c.IndexOf(" "));
|
|
if (c.IndexOf(">") > -1)
|
|
c = c.Substring(0, c.IndexOf(">"));
|
|
if (!string.IsNullOrEmpty(c))
|
|
html = Encoding.GetEncoding(c).GetString(b);
|
|
}
|
|
head = wb.ResponseHeaders.ToString();
|
|
}
|
|
catch (Exception ee)
|
|
{
|
|
html = "提交错误:" + ee.Message;
|
|
head = "";
|
|
//if (!againt)
|
|
//{
|
|
// againt = true;
|
|
// Thread.Sleep(10 * 1000);
|
|
// goto Againt;
|
|
//}
|
|
//if (!againt&&(ee.Message.Contains("目标机器")||(ee.Message.Contains("服务器"))))
|
|
//{
|
|
// againt = true;
|
|
// GetIPS();
|
|
// Thread.Sleep(10 * 1000);
|
|
// goto Againt;
|
|
//}
|
|
}
|
|
return GetHtml.Decode(html);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
LogSave.Add("访问网址错误:" + url + " " + e.Message);
|
|
return "";
|
|
}
|
|
|
|
}
|
|
public static string UploadTaobaoNewPost(string url, string refere, bool isUtf8, string data, bool isPost,
|
|
string cookies, WebProxy proxyObject)
|
|
{
|
|
bool againt = false;
|
|
try
|
|
{
|
|
cookies = "";
|
|
string pdd = "";
|
|
if (!string.IsNullOrEmpty(cookies))
|
|
pdd = BaseRegex.GetMatchRegexString(ref cookies, "PDDAccessToken=([^;]+?);");
|
|
string pddx = "";
|
|
if (!string.IsNullOrEmpty(cookies))
|
|
pddx = BaseRegex.GetMatchRegexString(ref cookies, "PASS_ID=([^;]+?);");
|
|
Againt:
|
|
string userAgent = UserAgentList[new Random(Guid.NewGuid().GetHashCode()).Next(0, UserAgentList.Count)];
|
|
if (!string.IsNullOrEmpty(userAgent) && !userAgent.Contains("MicroMessenger"))
|
|
{
|
|
userAgent = userAgent.Insert(new Random().Next(userAgent.Length), "MicroMessenger" + Guid.NewGuid().ToString().Replace("-", "").Substring(0, new Random().Next(5)));
|
|
}
|
|
WebClientx wb = new WebClientx();
|
|
wb.Timeout = 10;
|
|
wb.AllowAutoRedirect = true;
|
|
wb.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
|
|
wb.Headers.Add("Accept-Encoding", "gzip,deflate");
|
|
wb.Headers.Add("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
|
|
wb.Headers.Add("User-Agent", userAgent);
|
|
//SetAuthorization(wb);
|
|
wb.Proxy = null;
|
|
if (!string.IsNullOrEmpty(refere))
|
|
wb.Headers.Add("Referer", refere);
|
|
if (!string.IsNullOrEmpty(cookies))
|
|
wb.Headers.Add("Cookie", cookies);
|
|
wb.Proxy = proxyObject;
|
|
string rehead = wb.Headers.ToString();
|
|
var encode = isUtf8 ? Encoding.UTF8 : Encoding.GetEncoding("gbk");
|
|
byte[] b, postData = encode.GetBytes(data);
|
|
string html, head;
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(data) && !isPost)
|
|
{
|
|
b = wb.DownloadData(url);
|
|
}
|
|
else
|
|
{
|
|
if (isPost || url.Contains("taobao.com"))
|
|
{
|
|
wb.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
|
|
}
|
|
else
|
|
{
|
|
wb.Headers.Add("Content-Type", "application/json; charset=" + (isUtf8 ? "UTF-8" : "gbk"));
|
|
}
|
|
wb.Headers.Add("ContentLength", postData.Length.ToString());
|
|
b = wb.UploadData(url, "POST", postData);
|
|
}
|
|
html = encode.GetString(b);
|
|
|
|
string c = BaseRegex.GetMatchRegexString(wb.ResponseHeaders["Content-Type"], "charset\\s*=\\s*(\\S+)");
|
|
if (!string.IsNullOrEmpty(c))
|
|
{
|
|
c = c.Trim().ToLower().Replace("utf8", "utf-8");
|
|
}
|
|
if (string.IsNullOrEmpty(c))
|
|
c = BaseRegex.GetMatchRegexString(html, @"<meta [^>]*?charset=[""']*([\w-]+)[""']*");
|
|
if (!string.IsNullOrEmpty(c))
|
|
{
|
|
if (c.IndexOf("'") > -1)
|
|
c = c.Substring(0, c.IndexOf("'"));
|
|
if (c.IndexOf("\"") > -1)
|
|
c = c.Substring(0, c.IndexOf("\""));
|
|
if (c.IndexOf(" ") > -1)
|
|
c = c.Substring(0, c.IndexOf(" "));
|
|
if (c.IndexOf(">") > -1)
|
|
c = c.Substring(0, c.IndexOf(">"));
|
|
if (!string.IsNullOrEmpty(c))
|
|
html = Encoding.GetEncoding(c).GetString(b);
|
|
}
|
|
head = wb.ResponseHeaders.ToString();
|
|
}
|
|
catch (Exception ee)
|
|
{
|
|
html = "提交错误:" + ee.Message;
|
|
head = "";
|
|
//if (!againt)
|
|
//{
|
|
// againt = true;
|
|
// Thread.Sleep(10 * 1000);
|
|
// goto Againt;
|
|
//}
|
|
//if (!againt&&(ee.Message.Contains("目标机器")||(ee.Message.Contains("服务器"))))
|
|
//{
|
|
// againt = true;
|
|
// GetIPS();
|
|
// Thread.Sleep(10 * 1000);
|
|
// goto Againt;
|
|
//}
|
|
}
|
|
return GetHtml.Decode(html);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
LogSave.Add("访问网址错误:" + url + " " + e.Message);
|
|
return "";
|
|
}
|
|
|
|
}
|
|
|
|
|
|
public static string UploadTaobaoNewCePost(string url, string refere, bool isUtf8, string data, bool isPost,
|
|
string cookies, WebProxy proxyObject)
|
|
{
|
|
bool againt = false;
|
|
try
|
|
{
|
|
string pdd = "";
|
|
if (!string.IsNullOrEmpty(cookies))
|
|
pdd = BaseRegex.GetMatchRegexString(ref cookies, "PDDAccessToken=([^;]+?);");
|
|
string pddx = "";
|
|
if (!string.IsNullOrEmpty(cookies))
|
|
pddx = BaseRegex.GetMatchRegexString(ref cookies, "PASS_ID=([^;]+?);");
|
|
Againt:
|
|
string userAgent = UserAgentList[new Random(Guid.NewGuid().GetHashCode()).Next(0, UserAgentList.Count)];
|
|
if (!string.IsNullOrEmpty(userAgent) && !userAgent.Contains("MicroMessenger"))
|
|
{
|
|
userAgent = userAgent.Insert(new Random().Next(userAgent.Length), "MicroMessenger" + Guid.NewGuid().ToString().Replace("-", "").Substring(0, new Random().Next(5)));
|
|
}
|
|
WebClientx wb = new WebClientx();
|
|
wb.Timeout = 10;
|
|
wb.AllowAutoRedirect = true;
|
|
wb.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
|
|
wb.Headers.Add("Accept-Encoding", "gzip,deflate");
|
|
wb.Headers.Add("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
|
|
wb.Headers.Add("User-Agent", userAgent);
|
|
if (!string.IsNullOrEmpty(cookies) && cookies.Contains("PDDAccessToken") && BaseClass.CookiesAll.ContainsKey("yangkeduo.com") && BaseClass.CookiesAll["yangkeduo.com"].ContainsKey("PDDAccessToken"))
|
|
wb.Headers.Add("accesstoken", BaseClass.CookiesAll["yangkeduo.com"]["PDDAccessToken"]);
|
|
else if (!string.IsNullOrEmpty(pdd))
|
|
wb.Headers.Add("accesstoken", pdd);
|
|
//SetAuthorization(wb);
|
|
wb.Proxy = null;
|
|
if (!string.IsNullOrEmpty(refere))
|
|
wb.Headers.Add("Referer", refere);
|
|
if (!string.IsNullOrEmpty(cookies))
|
|
wb.Headers.Add("Cookie", cookies);
|
|
wb.Proxy = proxyObject;
|
|
string rehead = wb.Headers.ToString();
|
|
var encode = isUtf8 ? Encoding.UTF8 : Encoding.GetEncoding("gbk");
|
|
byte[] b, postData = encode.GetBytes(data);
|
|
string html, head;
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(data) && !isPost)
|
|
{
|
|
b = wb.DownloadData(url);
|
|
}
|
|
else
|
|
{
|
|
if (isPost || url.Contains("taobao.com"))
|
|
{
|
|
wb.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
|
|
}
|
|
else
|
|
{
|
|
wb.Headers.Add("Content-Type", "application/json; charset=" + (isUtf8 ? "UTF-8" : "gbk"));
|
|
}
|
|
wb.Headers.Add("ContentLength", postData.Length.ToString());
|
|
b = wb.UploadData(url, "POST", postData);
|
|
}
|
|
html = encode.GetString(b);
|
|
|
|
string c = BaseRegex.GetMatchRegexString(wb.ResponseHeaders["Content-Type"], "charset\\s*=\\s*(\\S+)");
|
|
if (!string.IsNullOrEmpty(c))
|
|
{
|
|
c = c.Trim().ToLower().Replace("utf8", "utf-8");
|
|
}
|
|
if (string.IsNullOrEmpty(c))
|
|
c = BaseRegex.GetMatchRegexString(html, @"<meta [^>]*?charset=[""']*([\w-]+)[""']*");
|
|
if (!string.IsNullOrEmpty(c))
|
|
{
|
|
if (c.IndexOf("'") > -1)
|
|
c = c.Substring(0, c.IndexOf("'"));
|
|
if (c.IndexOf("\"") > -1)
|
|
c = c.Substring(0, c.IndexOf("\""));
|
|
if (c.IndexOf(" ") > -1)
|
|
c = c.Substring(0, c.IndexOf(" "));
|
|
if (c.IndexOf(">") > -1)
|
|
c = c.Substring(0, c.IndexOf(">"));
|
|
if (!string.IsNullOrEmpty(c))
|
|
html = Encoding.GetEncoding(c).GetString(b);
|
|
}
|
|
head = wb.ResponseHeaders.ToString();
|
|
}
|
|
catch (Exception ee)
|
|
{
|
|
html = "提交错误:" + ee.Message;
|
|
head = "";
|
|
//if (!againt)
|
|
//{
|
|
// againt = true;
|
|
// Thread.Sleep(10 * 1000);
|
|
// goto Againt;
|
|
//}
|
|
//if (!againt&&(ee.Message.Contains("目标机器")||(ee.Message.Contains("服务器"))))
|
|
//{
|
|
// againt = true;
|
|
// GetIPS();
|
|
// Thread.Sleep(10 * 1000);
|
|
// goto Againt;
|
|
//}
|
|
}
|
|
return GetHtml.Decode(html);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
LogSave.Add("访问网址错误:" + url + " " + e.Message);
|
|
return "";
|
|
}
|
|
|
|
}
|
|
|
|
public static string UploadTaobaoPost(string url, string refere, bool isUtf8, string data, bool isPost,
|
|
string cookies)
|
|
{
|
|
bool againt = false;
|
|
try
|
|
{
|
|
//cookies = GetCookies(url, cookies);
|
|
//if (string.IsNullOrEmpty(cookies))
|
|
// cookies = BaseClass.ChromeCookies;
|
|
cookies = "";
|
|
string pdd = "";
|
|
if (!string.IsNullOrEmpty(cookies))
|
|
pdd = BaseRegex.GetMatchRegexString(ref cookies, "PDDAccessToken=([^;]+?);");
|
|
string pddx = "";
|
|
if (!string.IsNullOrEmpty(cookies))
|
|
pddx = BaseRegex.GetMatchRegexString(ref cookies, "PASS_ID=([^;]+?);");
|
|
Againt:
|
|
string userAgent = UserAgentList[new Random(Guid.NewGuid().GetHashCode()).Next(0, UserAgentList.Count)];
|
|
WebClientx wb = new WebClientx();
|
|
wb.Timeout = 30;
|
|
wb.AllowAutoRedirect = true;
|
|
wb.Headers.Add("Accept", "application/json, text/javascript, */*; q=0.01");
|
|
wb.Headers.Add("X-Requested-With", "XMLHttpRequest");
|
|
wb.Headers.Add("Accept-Encoding", "gzip,deflate");
|
|
SetAuthorization(wb);
|
|
if (!string.IsNullOrEmpty(cookies) && cookies.Contains("PDDAccessToken") && BaseClass.CookiesAll.ContainsKey("yangkeduo.com") && BaseClass.CookiesAll["yangkeduo.com"].ContainsKey("PDDAccessToken"))
|
|
wb.Headers.Add("accesstoken", BaseClass.CookiesAll["yangkeduo.com"]["PDDAccessToken"]);
|
|
else if (!string.IsNullOrEmpty(pdd))
|
|
wb.Headers.Add("accesstoken", pdd);
|
|
else if (!string.IsNullOrEmpty(pddx))
|
|
wb.Headers.Add("PASSID", pddx);
|
|
if (url.Contains("gy.taobao.com"))
|
|
wb.Headers.Add("Origin", "https://gy.taobao.com");
|
|
if (url.Contains("mms.pinduoduo.com"))
|
|
wb.Headers.Add("Origin", "http://mms.pinduoduo.com");
|
|
wb.Headers.Add("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
|
|
wb.Headers.Add("User-Agent", userAgent);
|
|
wb.Proxy = null;
|
|
if (!string.IsNullOrEmpty(refere))
|
|
wb.Headers.Add("Referer", refere);
|
|
if (!string.IsNullOrEmpty(cookies))
|
|
wb.Headers.Add("Cookie", cookies);
|
|
wb.Proxy = null;
|
|
string rehead = wb.Headers.ToString();
|
|
var encode = isUtf8 ? Encoding.UTF8 : Encoding.GetEncoding("gbk");
|
|
byte[] b, postData = encode.GetBytes(data);
|
|
string html, head;
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(data) && !isPost)
|
|
{
|
|
b = wb.DownloadData(url);
|
|
}
|
|
else
|
|
{
|
|
if (isPost || url.Contains("taobao.com"))
|
|
{
|
|
wb.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
|
|
}
|
|
else
|
|
{
|
|
wb.Headers.Add("Content-Type", "application/json; charset=" + (isUtf8 ? "UTF-8" : "gbk"));
|
|
}
|
|
wb.Headers.Add("ContentLength", postData.Length.ToString());
|
|
b = wb.UploadData(url, "POST", postData);
|
|
}
|
|
html = encode.GetString(b);
|
|
|
|
string c = BaseRegex.GetMatchRegexString(wb.ResponseHeaders["Content-Type"], "charset\\s*=\\s*(\\S+)");
|
|
if (!string.IsNullOrEmpty(c))
|
|
{
|
|
c = c.Trim().ToLower().Replace("utf8", "utf-8");
|
|
}
|
|
if (string.IsNullOrEmpty(c))
|
|
c = BaseRegex.GetMatchRegexString(html, @"<meta [^>]*?charset=[""']*([\w-]+)[""']*");
|
|
if (!string.IsNullOrEmpty(c))
|
|
{
|
|
if (c.IndexOf("'") > -1)
|
|
c = c.Substring(0, c.IndexOf("'"));
|
|
if (c.IndexOf("\"") > -1)
|
|
c = c.Substring(0, c.IndexOf("\""));
|
|
if (c.IndexOf(" ") > -1)
|
|
c = c.Substring(0, c.IndexOf(" "));
|
|
if (c.IndexOf(">") > -1)
|
|
c = c.Substring(0, c.IndexOf(">"));
|
|
if (!string.IsNullOrEmpty(c))
|
|
html = Encoding.GetEncoding(c).GetString(b);
|
|
}
|
|
head = wb.ResponseHeaders.ToString();
|
|
}
|
|
catch (Exception ee)
|
|
{
|
|
html = "提交错误:" + ee.Message;
|
|
head = "";
|
|
if (!againt)
|
|
{
|
|
againt = true;
|
|
Thread.Sleep(10 * 1000);
|
|
goto Againt;
|
|
}
|
|
}
|
|
return GetHtml.Decode(html);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
LogSave.Add("访问网址错误:" + url + " " + e.Message);
|
|
return "";
|
|
}
|
|
|
|
}
|
|
public static int GetJsonPostStatus(string url)
|
|
{
|
|
try
|
|
{
|
|
string userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.1.62 Safari/537.36 PddWorkbench-Online PddBrowser";
|
|
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);//
|
|
request.KeepAlive = true;
|
|
request.Accept = "application/json";
|
|
request.UserAgent = userAgent;
|
|
request.ContentType = "application/json;charset=UTF-8";
|
|
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br");
|
|
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
|
|
request.Method = "POST";
|
|
request.ServicePoint.Expect100Continue = false;
|
|
string body = @"{}";
|
|
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
|
|
request.ContentLength = postBytes.Length;
|
|
Stream stream = request.GetRequestStream();
|
|
stream.Write(postBytes, 0, postBytes.Length);
|
|
stream.Close();
|
|
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
|
|
{
|
|
return response.StatusCode.ParseToInt();
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
public static string GetCookies(string url, string cookies)
|
|
{
|
|
if (!string.IsNullOrEmpty(cookies))
|
|
return cookies;
|
|
string mainDomain = GetHtml.GetMainDomain(GetHtml.GetDomain(url));
|
|
if (BaseClass.CookiesAllString.ContainsKey(mainDomain))
|
|
cookies = BaseClass.CookiesAllString[mainDomain];
|
|
return cookies;
|
|
}
|
|
|
|
public static void SetAuthorization(WebClientx wb)
|
|
{
|
|
long timeStamp = GetUnixSecondTimeStamp(DateTime.Now) + BaseClass.TimeDifferent;
|
|
string hexadecimalTimeStamp = timeStamp.ToString("X");
|
|
string token = HMACSHA256(hexadecimalTimeStamp, ProxyIpKey).ToUpper();
|
|
wb.Headers.Remove(headerKey);
|
|
wb.Headers.Add(headerKey, string.Format("{0}|{1}", hexadecimalTimeStamp, token));
|
|
}
|
|
public static int GetUnixSecondTimeStamp(DateTime dt)
|
|
{
|
|
DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
|
|
return (int)(dt - startTime).TotalSeconds;
|
|
}
|
|
public static string HMACSHA256(string encrypt, string key = "")
|
|
{
|
|
var encoding = new ASCIIEncoding();
|
|
byte[] keyByte = encoding.GetBytes(key);
|
|
byte[] encryptByte = encoding.GetBytes(encrypt);
|
|
using (var hmacsha256 = new HMACSHA256(keyByte))
|
|
{
|
|
byte[] hashmessage = hmacsha256.ComputeHash(encryptByte);
|
|
StringBuilder builder = new StringBuilder();
|
|
for (int i = 0; i < hashmessage.Length; i++)
|
|
{
|
|
builder.Append(hashmessage[i].ToString("X2"));
|
|
}
|
|
return builder.ToString();
|
|
}
|
|
}
|
|
|
|
public static string UploadNewProxyJinBao(string url, string refere, bool isUtf8, string cookies, WebProxy proxyObject)
|
|
{
|
|
return UploadTaobaoNewJinBaoPost(url, refere, isUtf8, "", false, cookies, proxyObject);
|
|
}
|
|
public static string UploadNewProxyJinBaoPost(string url, string refere, bool isUtf8, string data, string cookies, WebProxy proxyObject)
|
|
{
|
|
return UploadTaobaoJinBaoPost(url, refere, isUtf8, data, false, cookies, proxyObject);
|
|
}
|
|
public static string UploadTaobaoNewJinBaoPost(string url, string refere, bool isUtf8, string data, bool isPost,
|
|
string cookies, WebProxy proxyObject)
|
|
{
|
|
bool againt = false;
|
|
try
|
|
{
|
|
//cookies = "";
|
|
string pdd = "";
|
|
if (!string.IsNullOrEmpty(cookies))
|
|
pdd = BaseRegex.GetMatchRegexString(ref cookies, "PDDAccessToken=([^;]+?);");
|
|
string pddx = "";
|
|
if (!string.IsNullOrEmpty(cookies))
|
|
pddx = BaseRegex.GetMatchRegexString(ref cookies, "PASS_ID=([^;]+?);");
|
|
Againt:
|
|
string userAgent = UserAgentList[new Random(Guid.NewGuid().GetHashCode()).Next(0, UserAgentList.Count)];
|
|
WebClientx wb = new WebClientx();
|
|
wb.Timeout = 10;
|
|
wb.AllowAutoRedirect = true;
|
|
wb.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
|
|
wb.Headers.Add("Accept-Encoding", "gzip,deflate");
|
|
wb.Headers.Add("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
|
|
wb.Headers.Add("User-Agent", userAgent);
|
|
//SetAuthorization(wb);
|
|
wb.Proxy = null;
|
|
if (!string.IsNullOrEmpty(refere))
|
|
wb.Headers.Add("Referer", refere);
|
|
if (!string.IsNullOrEmpty(cookies))
|
|
wb.Headers.Add("Cookie", cookies);
|
|
wb.Proxy = proxyObject;
|
|
string rehead = wb.Headers.ToString();
|
|
var encode = isUtf8 ? Encoding.UTF8 : Encoding.GetEncoding("gbk");
|
|
byte[] b, postData = encode.GetBytes(data);
|
|
string html, head;
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(data) && !isPost)
|
|
{
|
|
b = wb.DownloadData(url);
|
|
}
|
|
else
|
|
{
|
|
if (isPost || url.Contains("taobao.com"))
|
|
{
|
|
wb.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
|
|
}
|
|
else
|
|
{
|
|
wb.Headers.Add("Content-Type", "application/json; charset=" + (isUtf8 ? "UTF-8" : "gbk"));
|
|
}
|
|
wb.Headers.Add("ContentLength", postData.Length.ToString());
|
|
b = wb.UploadData(url, "POST", postData);
|
|
}
|
|
html = encode.GetString(b);
|
|
|
|
string c = BaseRegex.GetMatchRegexString(wb.ResponseHeaders["Content-Type"], "charset\\s*=\\s*(\\S+)");
|
|
if (!string.IsNullOrEmpty(c))
|
|
{
|
|
c = c.Trim().ToLower().Replace("utf8", "utf-8");
|
|
}
|
|
if (string.IsNullOrEmpty(c))
|
|
c = BaseRegex.GetMatchRegexString(html, @"<meta [^>]*?charset=[""']*([\w-]+)[""']*");
|
|
if (!string.IsNullOrEmpty(c))
|
|
{
|
|
if (c.IndexOf("'") > -1)
|
|
c = c.Substring(0, c.IndexOf("'"));
|
|
if (c.IndexOf("\"") > -1)
|
|
c = c.Substring(0, c.IndexOf("\""));
|
|
if (c.IndexOf(" ") > -1)
|
|
c = c.Substring(0, c.IndexOf(" "));
|
|
if (c.IndexOf(">") > -1)
|
|
c = c.Substring(0, c.IndexOf(">"));
|
|
if (!string.IsNullOrEmpty(c))
|
|
html = Encoding.GetEncoding(c).GetString(b);
|
|
}
|
|
head = wb.ResponseHeaders.ToString();
|
|
}
|
|
catch (Exception ee)
|
|
{
|
|
html = "提交错误:" + ee.Message;
|
|
head = "";
|
|
//if (!againt)
|
|
//{
|
|
// againt = true;
|
|
// Thread.Sleep(10 * 1000);
|
|
// goto Againt;
|
|
//}
|
|
//if (!againt&&(ee.Message.Contains("目标机器")||(ee.Message.Contains("服务器"))))
|
|
//{
|
|
// againt = true;
|
|
// GetIPS();
|
|
// Thread.Sleep(10 * 1000);
|
|
// goto Againt;
|
|
//}
|
|
}
|
|
return GetHtml.Decode(html);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
LogSave.Add("访问网址错误:" + url + " " + e.Message);
|
|
return "";
|
|
}
|
|
|
|
}
|
|
|
|
public static string UploadTaobaoJinBaoPost(string url, string refere, bool isUtf8, string data, bool isPost,
|
|
string cookies, WebProxy proxyObject)
|
|
{
|
|
bool againt = false;
|
|
try
|
|
{
|
|
cookies = GetCookies(url, cookies);
|
|
if (string.IsNullOrEmpty(cookies))
|
|
cookies = BaseClass.ChromeCookies;
|
|
string pdd = "";
|
|
if (!string.IsNullOrEmpty(cookies))
|
|
pdd = BaseRegex.GetMatchRegexString(ref cookies, "PDDAccessToken=([^;]+?);");
|
|
string pddx = "";
|
|
if (!string.IsNullOrEmpty(cookies))
|
|
pddx = BaseRegex.GetMatchRegexString(ref cookies, "PASS_ID=([^;]+?);");
|
|
Againt:
|
|
string userAgent = BaseClass.ChromeUserAgent;
|
|
WebClientx wb = new WebClientx();
|
|
wb.Timeout = 3;
|
|
wb.AllowAutoRedirect = true;
|
|
wb.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
|
|
wb.Headers.Add("Accept-Encoding", "gzip,deflate");
|
|
wb.Headers.Add("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
|
|
wb.Headers.Add("User-Agent", userAgent);
|
|
wb.Proxy = null;
|
|
if (!string.IsNullOrEmpty(refere))
|
|
wb.Headers.Add("Referer", refere);
|
|
if (!string.IsNullOrEmpty(cookies))
|
|
wb.Headers.Add("Cookie", cookies);
|
|
wb.Proxy = proxyObject;
|
|
string rehead = wb.Headers.ToString();
|
|
var encode = isUtf8 ? Encoding.UTF8 : Encoding.GetEncoding("gbk");
|
|
byte[] b, postData = encode.GetBytes(data);
|
|
string html, head;
|
|
try
|
|
{
|
|
if (string.IsNullOrEmpty(data) && !isPost)
|
|
{
|
|
b = wb.DownloadData(url);
|
|
}
|
|
else
|
|
{
|
|
if (isPost || url.Contains("taobao.com"))
|
|
{
|
|
wb.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
|
|
}
|
|
else
|
|
{
|
|
wb.Headers.Add("Content-Type", "application/json; charset=" + (isUtf8 ? "UTF-8" : "gbk"));
|
|
}
|
|
wb.Headers.Add("ContentLength", postData.Length.ToString());
|
|
b = wb.UploadData(url, "POST", postData);
|
|
}
|
|
html = encode.GetString(b);
|
|
|
|
string c = BaseRegex.GetMatchRegexString(wb.ResponseHeaders["Content-Type"], "charset\\s*=\\s*(\\S+)");
|
|
if (!string.IsNullOrEmpty(c))
|
|
{
|
|
c = c.Trim().ToLower().Replace("utf8", "utf-8");
|
|
}
|
|
if (string.IsNullOrEmpty(c))
|
|
c = BaseRegex.GetMatchRegexString(html, @"<meta [^>]*?charset=[""']*([\w-]+)[""']*");
|
|
if (!string.IsNullOrEmpty(c))
|
|
{
|
|
if (c.IndexOf("'") > -1)
|
|
c = c.Substring(0, c.IndexOf("'"));
|
|
if (c.IndexOf("\"") > -1)
|
|
c = c.Substring(0, c.IndexOf("\""));
|
|
if (c.IndexOf(" ") > -1)
|
|
c = c.Substring(0, c.IndexOf(" "));
|
|
if (c.IndexOf(">") > -1)
|
|
c = c.Substring(0, c.IndexOf(">"));
|
|
if (!string.IsNullOrEmpty(c))
|
|
html = Encoding.GetEncoding(c).GetString(b);
|
|
}
|
|
head = wb.ResponseHeaders.ToString();
|
|
}
|
|
catch (Exception ee)
|
|
{
|
|
html = "提交错误:" + ee.Message;
|
|
head = "";
|
|
//if (!againt)
|
|
//{
|
|
// againt = true;
|
|
// Thread.Sleep(10 * 1000);
|
|
// goto Againt;
|
|
//}
|
|
//if (!againt&&(ee.Message.Contains("目标机器")||(ee.Message.Contains("服务器"))))
|
|
//{
|
|
// againt = true;
|
|
// GetIPS();
|
|
// Thread.Sleep(10 * 1000);
|
|
// goto Againt;
|
|
//}
|
|
}
|
|
return GetHtml.Decode(html);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
LogSave.Add("访问网址错误:" + url + " " + e.Message);
|
|
return "";
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
public enum ProxyTypeEnum
|
|
{
|
|
[Description("未知")]
|
|
Unknown = 0,
|
|
|
|
[Description("火箭代理 http://125.88.158.218/")]
|
|
RocketDaiLi = 1,
|
|
|
|
[Description("66代理")]
|
|
SixSixDaiLi = 2,
|
|
|
|
[Description("快代理")]
|
|
KuaiDaiLi = 3
|
|
}
|
|
public enum UserAgentTypeEnum
|
|
{
|
|
[Description("未知")]
|
|
Unknown = 0,
|
|
|
|
[Description("PC")]
|
|
PC = 1,
|
|
|
|
[Description("Mobile")]
|
|
Mobile = 2,
|
|
|
|
[Description("Pad")]
|
|
Pad = 3
|
|
}
|
|
public class HttpParam
|
|
{
|
|
public HttpParam()
|
|
{
|
|
ResponseEncoding = Encoding.UTF8;
|
|
}
|
|
public string Url { get; set; }
|
|
public string Method { get; set; }
|
|
public string PostData { get; set; }
|
|
public string ContentType { get; set; }
|
|
public string Cookie { get; set; }
|
|
public string Referer { get; set; }
|
|
public string UserAgent { get; set; }
|
|
public UserAgentTypeEnum UserAgentType { get; set; }
|
|
public string AcceptLanguage { get; set; }
|
|
public string Accept { get; set; }
|
|
[JsonIgnore]
|
|
public WebProxy Proxy { get; set; }
|
|
public int Timeout { get; set; }
|
|
public Dictionary<string, string> Header { get; set; }
|
|
public int ProxySleep { get; set; }
|
|
public int TryTimes { get; set; }
|
|
public int ActualTryTimes { get; set; }
|
|
[JsonIgnore]
|
|
public CancellationTokenSource CancellationTokenSource { get; set; }
|
|
[JsonIgnore]
|
|
public Encoding ResponseEncoding { get; set; }
|
|
}
|
|
}
|