SuperDesign/Source/开发辅助工具/Tools/FrmWebGet.cs
zilinsoft 1f8c54fe38 - *.[改进]项目支持自动打包功能。
### RySmartEditor    V1.0.2501.2701
- *.[改进]FTP上传时限制300毫秒内只能刷新一次UI进度。
### SuperDesign    V3.0.2501.2701
- *.[新增]新增支持在线升级功能。
#### 项目功能->项目管理
- *.[新增]FTP上传文件列表和打包文件列表支持在软件里直接编辑。
- *.[改进]更新dll版本将比对版本号,只更新版本号更新或者更新日期更新的dll。
#### 项目功能->更新日志
- *.[新增]新增支持自动记录过的分组信息,然后可以进行选择快速插入。
- *.[新增]记录使用过的项目信息到总数据库,以方便总览。
- *.[改进]右键插入日志时直接对富文本框进行编辑,而不是替换内容,从而具备撤销功能。
- *.[改进]改进MD日志输出的样式设计。
- *.[修复]修复《确认日志覆盖》窗口里的按钮,随着窗口大小变化,按钮会错乱的BUG。
- *.[修复]修复双击日志列表显示日志时,针对本周的时间显示不正确的BUG。
- *.[修复]修复右键新增日志时,如果没有分组,插入的行可能不正确的BUG。
- *.[修复]修复设为开发日志后,鼠标指针变到文本开头的问题。
#### 网页抓取工具
- *.[新增]新增多个常用UA。
- *.[新增]切换Url时如果存在Cookie和Header时,则提示是否清空。
- *.[新增]保存记录时新增支持保存UA。
- *.[新增]Url列表支持图标展示。
2025-01-27 15:41:54 +08:00

1992 lines
99 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using BrightIdeasSoftware;
using DotNet4.Utilities;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using ryCommon;
using ryCommonDb;
using ryControls;
using ryProcessManager.hezuo;
using ScintillaNETV2;
using .Controls;
using .Tools;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Design;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Windows.Forms;
using System.Xml;
using WeifenLuo.WinFormsUI.Docking;
using .Manager;
using System.Xml.Linq;
using SuperDesign.Manager;
using SuperDesign.Tools;
using ScintillaNETV2.Highlight;
using System.Runtime.InteropServices;
using WinShell;
namespace .Tools
{
public partial class FrmWebGet : DockContent
{
public FrmWebGet()
{
InitializeComponent();
LoadPram();
tabControl2.SelectedTab = tabPage12;
OlvUrl.AspectGetter = delegate (object x) { return ((UrlInfo)x)?.Url; };
OlvUrl.Renderer = new UrlRenderer();
OlvName.AspectGetter = delegate (object x) {
var item = (UrlInfo)x;
if (item==null || item.Des.Length == 0)
{ return item==null?"":item.Name; }
else
{
return "【"+item.Des+"】"+ item.Name;
}
};
//OlvUrl.Renderer = CreateDescribedTaskRenderer();
objectListView2.FormatRow += ObjectListView2_FormatRow;
}
class UrlRenderer : BaseRenderer
{
public UrlRenderer()
{
UseGdiTextRendering = false;
}
//
// 摘要:
// Draw the flags
//
// 参数:
// g:
//
// r:
public override void Render(Graphics g, Rectangle r)
{
DrawBackground(g, r);
if (!(base.Aspect is IConvertible convertible))
{
return;
}
r = ApplyCellPadding(r);
if (base.RowObject is UrlInfo item1)
{
var start_x = 0;
if(item1.Icon!=null)
{
start_x += DrawImage2(g, r, start_x,new Bitmap(item1.Icon));
}
start_x += DrawText2(g, r, start_x,item1.Url);
}
}
}
private DescribedTaskRenderer CreateDescribedTaskRenderer()
{
// Let's create an appropriately configured renderer.
DescribedTaskRenderer renderer = new DescribedTaskRenderer
{
// Give the renderer its own collection of images.
// If this isn't set, the renderer will use the SmallImageList from the ObjectListView.
// (this is standard Renderer behaviour, not specific to DescribedTaskRenderer).
// Tell the renderer which property holds the text to be used as a description
DescriptionAspectName = "Name",
UseCustomCheckboxImages = false,
// Change the formatting slightly
TitleFont = new Font("宋体", 9, FontStyle.Regular),
DescriptionFont = new Font("宋体", 9),
DescriptionColor = Color.Gray,
TopSpace = 2,
//renderer.ImageTextSpace = 8;
TitleDescriptionSpace = 2,
// Use older Gdi renderering, since most people think the text looks clearer
UseGdiTextRendering = true
};
// If you like colours other than black and grey, you could uncomment these
// renderer.TitleColor = Color.DarkBlue;
// renderer.DescriptionColor = Color.CornflowerBlue;
return renderer;
}
private void ObjectListView2_FormatRow(object sender, BrightIdeasSoftware.FormatRowEventArgs e)
{
var item = (UrlInfo)e.Model;
if (item!=null && item.Fav) { e.Item.ForeColor = Color.Blue; } else { e.Item.ForeColor = Color.Black; }
}
private void LoadPram()
{
CbbContentType.SelectedIndex = 0;
CbbEncoding.SelectedIndex = 0;
CbbTimeout.SelectedIndex = CbbTimeout.Items.Count-2;
CbbWriteTimeout.SelectedIndex = CbbWriteTimeout.Items.Count - 2;
CbbUserAgent.Items.AddRange(new ComboPopupItem[]{
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.windows,Text = "Edge浏览器", ValueStr1 = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 Edg/132.0.0.0" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.windows,Text = "Chrome浏览器", ValueStr1 = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.windows,Text = "Firefox浏览器", ValueStr1 = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.windows,Text = "Opera浏览器", ValueStr1 = "Opera/9.27 (Windows NT 5.2; U; zh-cn)" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.windows,Text = "IE7浏览器", ValueStr1 = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT6.0)" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.windows,Text = "IE9浏览器", ValueStr1 = "Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1;Trident/5.0;" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.windows,Text = "QQ浏览器极速模式", ValueStr1 = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6776.400 QQBrowser/10.3.2601.400" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.windows,Text = "360浏览器极速模式", ValueStr1 = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources., Text = "华为浏览器安卓手机版", ValueStr1 = "Mozilla/5.0 (Linux; Android 12; HarmonyOS; NAM-AL00; HMSCore 6.14.0.302) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.196 HuaweiBrowser/15.0.7.301 Mobile Safari/537.36" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.,Text = "UC浏览器安卓手机版", ValueStr1 = "Mozilla/5.0 (Linux; U; Android 12; zh-CN; NAM-AL00 Build/HUAWEINAM-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.58 UCBrowser/16.4.2.1293 Mobile Safari/537.36" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.,Text = "QQ浏览器安卓手机版", ValueStr1 = "Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/8.9 Mobile Safari/537.36" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.,Text = "360浏览器安卓手机版", ValueStr1 = "Mozilla/5.0 (Linux; Android 12; NAM-AL00 Build/HUAWEINAM-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/81.0.4044.145 Mobile Safari/537.36" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.,Text = "安卓", ValueStr1 = "Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03S) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.鸿os, Text = "Harmony OS NEXT 华为浏览器", ValueStr1 = "Mozilla/5.0 (Phone; OpenHarmony 5.0)AppleWebKit/537.36 (KHTML, like Gecko)Chrome/114.0.0.0 Safari/537.36 ArkWeb/4.1.6.1 Mobile HuaweiBrowser/5.0.3.351" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.鸿os, Text = "Harmony OS NEXT UC浏览器", ValueStr1 = "Mozilla/5.0 (Phone; OpenHarmony 5.0)AppleWebKit/537.36 (KHTML, like Gecko)Chrome/114.0.0.0 ArkWeb/4.1.6.1 UCBrowser/1.1.6.0 Mobile Safari/537.36" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.鸿os, Text = "Harmony OS NEXT QQ浏览器", ValueStr1 = "Mozilla/5.0 (Phone; Android 14;OpenHarmony 5.0) AppleWebKit/537.36(KHTML, like Gecko) Version/4.0 Chrome/ 114.0.0.0 ArkWeb/4.1.6.1 Mobile Safari/537.36qbyouthfynohead/15.0" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.鸿os, Text = "Harmony OS NEXT 360浏览器", ValueStr1 = "Mozilla/5.0 (Phone; OpenHarmony 5.0;HarmonyOS 5.0) AppleWebKit/537.36(KHTML,like Gecko) Chrome/114.0.0.0 Safari/537.36 ArkWeb/4.1.6.1 Mobile Browser/harmony360Browser/1.0.0" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.,Text = "微信", ValueStr1 = "Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; GT-I9300 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 MicroMessenger/5.2.380" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.iphone, Text = "iPhone", ValueStr1 = "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1C28 Safari/419.3" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.iphone, Text = "Safari Mac浏览器", ValueStr1 = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6 Safari/605.1.15" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.iphone, Text = "Edge浏览器 Mac版", ValueStr1 = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0" },
new ComboPopupItem() {Image=SuperDesign.Properties.Resources.iphone, Text = "Chrome浏览器 Mac版", ValueStr1 = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36" },
});
CbbUserAgent.SelectedIndex = 0;
TxtPost.AddSeparatorMenu();
TxtPost.AddMenu("将选定项进行Url编码(UTF8)", "").Click += new EventHandler((object sender2, EventArgs e2) =>
{
RyWeb.QuickWeb web = new RyWeb.QuickWeb();
TxtPost.SelectedText = web.UrlEncode(TxtPost.SelectedText, Encoding.UTF8);
});
TxtPost.AddMenu("将选定项进行Url编码(GB2312)", "").Click += new EventHandler((object sender2, EventArgs e2) =>
{
RyWeb.QuickWeb web = new RyWeb.QuickWeb();
TxtPost.SelectedText = web.UrlEncode(TxtPost.SelectedText, Encoding.GetEncoding("GB2312"));
});
TxtPost.AddSeparatorMenu();
TxtPost.AddMenu("将选定项进行Url解码(UTF8)", "").Click += new EventHandler((object sender2, EventArgs e2) =>
{
TxtPost.SelectedText = RyWeb.WebDecode.UrlDecode(TxtPost.SelectedText, Encoding.UTF8);
});
TxtPost.AddMenu("将选定项进行Url解码(GB2312)", "").Click += new EventHandler((object sender2, EventArgs e2) =>
{
TxtPost.SelectedText = RyWeb.WebDecode.UrlDecode(TxtPost.SelectedText, Encoding.GetEncoding("GB2312"));
});
TxtPost.AddSeparatorMenu();
TxtPost.AddMenu("查询选定项对应的时间", "unixtime").Click += new EventHandler((object sender2, EventArgs e2) =>
{
MessageBox.Show("当前选中的时间是:" + RyDate.UnixTimeToDateTime(TxtPost.SelectedText).ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
});
TxtPost.AddMenu("插入时间戳", "").Click += new EventHandler((object sender2, EventArgs e2) =>
{
.Controls.FrmInsertUnixTime frm = new .Controls.FrmInsertUnixTime
{
Icon = Icon
};
var text = TxtPost.SelectedText;
if(text.Length>4 && text.IsInt())
{
frm.dateTimePickerEX1.Value = RyDate.UnixTimeToDateTime(text);
}
if (frm.ShowDialog()==DialogResult.OK)
{
TxtPost.SelectedText = RyDate.DateTimeToUnixTime(frm.dateTimePickerEX1.Value).ToString();
}
// MessageBox.Show("当前选中的时间是:" + RyDate.UnixTimeToDateTime(TxtPost.SelectedText).ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
});
TxtPost.OnMenuOpening += TxtPost_OnMenuOpening;
}
private void TxtPost_OnMenuOpening(object sender, CancelEventArgs e)
{
var item= TxtPost.GetMenuItem("unixtime");
if(item!=null)
{
var text = TxtPost.SelectedText;
item.Visible = text.IsInt() && text.Length>4;
}
}
private bool IsExit = false;
private bool IsRunning = false;
Thread th;
private void BtnRunHtml_Click(object sender, EventArgs e)
{
objectListView2.Visible = false;
if (IsRunning) {
IsExit = true;
BtnRunHtml.Text = "停止中"; ;
if (th!=null && th.IsAlive)
{
th.Abort();
}
return;
}
IsExit = false;
IsRunning = true;
BtnRunHtml.Text = "停止执行"; ;
#region
this.RichHtml.Text = "正在获取数据...";
highlightEditor1.Text="正在获取数据...";
this.RichCookie.Text = "";
RichHeader.Text = "";
RichStatus.Text = "";
extendedWebBrowser1.LoadStrings("");
if (TxtUrl.Text.IndexOfEx("//") == 0)
{
TxtUrl.Text = "http:" + TxtUrl.Text;
}
else if (TxtUrl.Text.IndexOfEx("://") == 0)
{
TxtUrl.Text = "http" + TxtUrl.Text;
}
else if (TxtUrl.Text.IndexOfEx("http") != 0)
{
TxtUrl.Text = "http://" + TxtUrl.Text.TrimStart('/');
}
string str = GetMethod();
var PostData = this.TxtPost.Text.Trim();
if (str == "head") { PostData = ""; }
if (CbbContentType.Text== "application/json")
{
try
{
JObject jo = (JObject)JsonConvert.DeserializeObject(PostData);
PostData = Newtonsoft.Json.JsonConvert.SerializeObject(jo, new Newtonsoft.Json.JsonSerializerSettings() { StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.EscapeNonAscii });
}
catch
{
}
}
HttpItem item = new HttpItem
{
URL = TxtUrl.Text.Trim(),
Method = str,
Cookie = this.TxtCookie.Text.Trim(),
Referer = this.CbbReferer.Text.Trim(),
Postdata = PostData,
Timeout = this.CbbTimeout.Text.Replace("秒", string.Empty).Trim().ToInt() * 0x3e8,
ReadWriteTimeout = this.CbbWriteTimeout.Text.Replace("秒", string.Empty).Trim().ToInt() * 0x3e8,
UserAgent = this.CbbUserAgent.Text,
ContentType = this.CbbContentType.Text,
Allowautoredirect = this.ChkJump.Checked,
ProtocolVersion = System.Net.HttpVersion.Version11,
ResultType = ChkGetPic.Checked ? ResultType.Byte : ResultType.String,
};
if (TxtInputHeader.Text.Length > 0)
{
try
{
string[] item_header = TxtInputHeader.Text.Replace("\r", "").Split('\n');
for (int i = 0; i < item_header.Length; i++)
{
var split = item_header[i].Split(':');
if(split.Length==2)
{
if (split[0].ToLower()== "accept")
{
item.Accept= split[1];
continue;
}
else if (split[0].ToLower() == "content-type")
{
item.ContentType = split[1];
continue;
}
}
item.Header.Add(item_header[i]);
//int iPos = item_header[i].LastIndexOf(":");
//if (iPos > 0)
//{
// var header_name = item_header[i].Substring(0, iPos);
// var header_value = item_header[i].Substring(iPos + 1);
// item.Header.Add(header_name, header_value);
//}
}
}
catch (Exception exception)
{
this.RichHtml.Text = exception.Message;
highlightEditor1.Text = "";
tabControl2.SelectedIndex = 0;
BtnRunHtml.Text = "执行";
IsRunning = false;
return;
}
}
if (CbbUserAgent.SelectedIndex != -1)
{
if (CbbUserAgent.SelectedItem is ComboPopupItem info)
{
item.UserAgent = info.ValueStr1;
}
}
if (!string.IsNullOrEmpty(this.CbbIp.Text.Trim()))
{
item.ProxyIp = this.CbbIp.Text.Trim();
}
if (!this.CbbEncoding.Text.Contains("自动"))
{
item.Encoding = Encoding.GetEncoding(this.CbbEncoding.Text.Trim());
}
#endregion
if (th != null && th.IsAlive)
{
th.Abort();
}
if(RbHead.Checked)
{
tabControl2.SelectedTab = tabPage6;
}
th = new Thread(Start);
th.Start();
void Start()
{
try
{
var http = new HttpHelper();
DateTime dt = DateTime.Now;
var result = http.GetHtml(item);
DateTime dt_end = DateTime.Now;
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
Uri uri = null;
var api_url = "";
string api_name = "";
try
{
uri = new Uri(item.URL);
var host = uri.Host.ToLower();
if(!System.IO.File.Exists(Application.StartupPath+ "\\SysDb\\webicons\\"+host+".png") &&
!System.IO.File.Exists(Application.StartupPath + "\\UserDb\\webicons\\" + host + ".ico"))
{
var img = RyImage.LoadPic(uri.Scheme+"://"+uri.Host+ "/favicon.ico");
if(img!=null)
{
img.Save(Application.StartupPath + "\\UserDb\\webicons\\" + host + ".ico");
}
}
if (host.IndexOfEx("www.87g") == 0 || host.IndexOfEx("www.3h3") == 0
|| host.IndexOfEx("www.downxia") == 0 || host.IndexOfEx("www.downbank") == 0 || host.IndexOfEx("www.downxing") == 0 || host.IndexOfEx("downwn.com") == 0)
{
if (str=="get")
{
api_url = "<site>" + uri.AbsolutePath;
}
else
{
api_url = "<site>" + uri.PathAndQuery;
}
var urlparam = RyWeb.WebDecode.UrlToData(uri.OriginalString);
api_name = urlparam.Get("a");
if (api_name.Length == 0)
{
api_name = urlparam.Get("api");
}
}
else
{
if (str == "get")
{
api_url = uri.Scheme + "://" + uri.Host + (uri.Port == 80 ? "" : (":" + uri.Port)) + uri.AbsolutePath;
}
else
{
api_url = uri.OriginalString;
}
}
Dictionary<string, string> dict_urlpost = new Dictionary<string, string>();
if (!item.Postdata.StartsWith("{"))
{
var post = RyWeb.WebDecode.UrlToData(str == "get" ? uri.OriginalString : ("f?" + item.Postdata));
if (post.Item2 != null)
{
dict_urlpost = post.Item2.ToDictionary(item2 => item2.Key, item2 => item2.Value);
}
}
if (dict_urlpost.Count > 0)
{
IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1)
{
bool is_update = false;
RyQuickSQL mySQL = new RyQuickSQL("api");
mySQL.AddField("Url", api_url);
DataSet ds = db.ReadData("select * from api where Url=@Url", mySQL);
var json_post = "";
if (ds.HaveData())
{
var row = ds.GetFirstRowData();
json_post = row["Postdata"].ToString();
is_update = true;
mySQL.AddField("ClickCount", row["ClickCount"].ToInt() + 1);//点击次数
}
else
{
mySQL.AddField("Name", "");
mySQL.AddField("APIName", api_name);
mySQL.AddField("addTime", DateTime.Now);
mySQL.AddField("AddUser", "robot");
}
mySQL.AddField("editTime", DateTime.Now);
JObject jo;
if (json_post.Length == 0) { jo = new JObject(); }
else { jo = JObject.Parse(json_post); }
Dictionary<string, PostInfo> dict_post = new Dictionary<string, PostInfo>();
if (jo.ContainsKey("list"))
{
JArray jarr = JArray.Parse(jo["list"].ToString());
for (int i = 0; i < jarr.Count; i++)
{
var item_jarr = jarr[i];
var param_name = item_jarr["paramname"].ToString();
dict_post[param_name] = new PostInfo()
{
Title = item_jarr["title"].ToString(),
ParamName = param_name,
Desc = item_jarr["desc"].ToString(),
};
}
foreach (var item2 in dict_urlpost)
{
if (!dict_post.ContainsKey(item2.Key))
{
JObject jo_item = new JObject
{
{ "paramname", item2.Key },
{ "title", APIManager.GetParamTitle(item2.Key) },
{ "paramvalue", item2.Value },
{ "desc", "" }
};
jarr.Add(jo_item);
}
}
jo["list"] = jarr;
}
else
{
JArray jarr_new = new JArray();
foreach (var item2 in dict_urlpost)
{
JObject jo_item = new JObject
{
{ "paramname", item2.Key },
{ "title",APIManager.GetParamTitle(item2.Key) },
{ "paramvalue", item2.Value },
{ "desc", "" }
};
jarr_new.Add(jo_item);
}
jo.Add("list", jarr_new);
}
mySQL.AddField("Postdata", jo.ToString());
if (is_update)
{
db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where Url=@Url", mySQL);
}
else
{
db.Insert(mySQL);
}
}
db.Free();
}
}
catch(Exception ex) { MessageBox.Show(ex.Message); }
}
this.Invoke(new Action(() =>
{
#region
if (result.Html.Length > 1024 * 1024 * 100)
{
this.RichHtml.Text = "获取失败,您要获取的网页超过100MB暂时无法获取。";
highlightEditor1.Text = "获取失败,您要获取的网页超过100MB暂时无法获取。";
}
else
{
if (result.StatusCode == System.Net.HttpStatusCode.Redirect)
{
if (!ChkJump.Checked)
{
switch (MessageBox.Show("当前Url需要跳转,是否勾选跳转重试获取?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
{
case DialogResult.Yes:
ChkJump.Checked = true;
IsRunning = false;
BtnRunHtml_Click(sender, e);
return;
}
}
}
RichHtml.Text = string.Empty;
if (this.ChkGetPic.Checked)
{
pictureBox1.Image = this.ByteArrayToImage(result.ResultByte);
RichHtml.Visible = false;
pictureBox1.Visible = true;
tabControl2.SelectedIndex = 0;
AddUrl("", TxtUrl.Text);
}
else
{
this.RichHtml.Text = result.Html;
if(result.Html.IndexOfEx("<xml")==0 || result.Html.IndexOfEx("<?xml") == 0)
{
IndentLibrary.HtmlIndent indent = new IndentLibrary.HtmlIndent();
try
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(result.Html);
StringBuilder sb = new StringBuilder();
XmlWriterSettings settings = new XmlWriterSettings
{
Indent = true,
IndentChars = " ",
NewLineChars="\r\n",
NewLineHandling = NewLineHandling.Replace
};
using (XmlWriter writer = XmlWriter.Create(sb, settings))
{
doc.Save(writer);
highlightEditor1.SetHightlightText(sb.ToString(), "xml");
}
}
catch
{
highlightEditor1.SetHightlightText(indent.Beautify(result.Html), "xml");
}
AddUrl("", TxtUrl.Text);
}
else if (Manager.Json.IsJson(result.Html))
{
highlightEditor1.SetHightlightText(Manager.Json.ConvertJsonString(result.Html), "json");
AddUrl("", TxtUrl.Text);
}
else
{
string[] _format_html = result.Html.Replace("\r", "").Split('\n');
string _html = "";
for (int i = 0; i < _format_html.Length; i++)
{
if (_format_html[i].Trim().Length == 0)
{
continue;
}
if (_html.Length > 0) { _html += "\r\n"; }
_html += _format_html[i];
}
//try
//{
// var html2 = JJCCX.Xml.HtmlFormater.ConvertToXml(_html, true);
// scintilla1.Text = html2;
//}
//catch(Exception ex)
//{
// scintilla1.Text = _html;
//}
IndentLibrary.HtmlIndent indent = new IndentLibrary.HtmlIndent();
try
{
highlightEditor1.SetHightlightText(indent.Beautify(_html).Trim(), "html");
}
catch { highlightEditor1.SetHightlightText(_html, "html"); }
if (result.StatusCode == System.Net.HttpStatusCode.Redirect || result.StatusCode == System.Net.HttpStatusCode.OK)
{
string title = "";
try
{
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.LoadHtml(result.Html);
var anchors = htmlDoc.DocumentNode.SelectNodes("//title");
if (anchors != null && anchors.Count > 0)
{
title = RyWeb.WebDecode.ConvertHtmlInner(anchors[0].InnerText);
}
}
catch { }
AddUrl(title, TxtUrl.Text);
}
}
this.RichHtml.Visible = true;
this.pictureBox1.Visible = false;
}
}
this.RichCookie.Text = result.Cookie;
var timespan = (dt_end - dt).TotalMilliseconds.ToInt();
string timespan_str = "";
if (timespan < 1000) { timespan_str = timespan + "毫秒"; }
else { timespan_str = timespan / 1000 + "秒" + timespan % 1000 + "毫秒"; }
this.RichStatus.Text = "StatusCode:" + result.StatusCode.ToString()+"["+ (int)result.StatusCode+ "]" + "\r\nStatusDescription:" + result.StatusDescription + "\r\n提交时间:" + dt.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n响应耗时:" + timespan_str+"\r\n"+"实际地址:"+ result.ResponseUri;
this.RichHeader.Text = "";
if (result.Header != null)
{
foreach (string str1 in result.Header.AllKeys)
{
string text = this.RichHeader.Text;
this.RichHeader.Text = text + str1 + ":" + result.Header[str1].ToString() + "\r\n";
}
}
if (!ChkNoPreview.Checked)
{
if (ChkHtmlPreview.Checked)
{
if (!this.CbbEncoding.Text.Contains("自动"))
{
extendedWebBrowser1.LoadStrings(RichHtml.Text.Trim(), Encoding.GetEncoding(this.CbbEncoding.Text.Trim()));
}
else { extendedWebBrowser1.LoadStrings(RichHtml.Text.Trim()); }
//MessageBox.Show(extendedWebBrowser1.Document.Encoding);
//extendedWebBrowser1.Document.Encoding = Encoding.UTF8.BodyName;
}
else
{
if (RbGet.Checked)
{
extendedWebBrowser1.Navigate(TxtUrl.Text, null, null, TxtInputHeader.Text);
}
else
{
string strData = TxtPost.Text;
string strHeaders = "Content-Type: " + CbbContentType.Text + "\r\n" + TxtInputHeader.Text;
ASCIIEncoding AE = new ASCIIEncoding();
byte[] bytePost = AE.GetBytes(strData);
//byte[] byteHeaders = AE.GetBytes(strHeaders);
extendedWebBrowser1.Navigate(TxtUrl.Text, null, bytePost, strHeaders);
}
}
}
#endregion
}));
}
catch (Exception exception)
{
this.Invoke(new Action(() =>
{
if (IsExit)
{
this.RichHtml.Text = "用户中断执行";
BtnRunHtml.Text = "执行";
IsRunning = false;
}
else
{
this.RichHtml.Text = exception.Message;
}
highlightEditor1.Text = "";
}));
}
this.Invoke(new Action(() =>
{
BtnRunHtml.Text = "执行";
IsRunning = false;
}));
}
}
private Image ByteArrayToImage(byte[] Bytes)
{
MemoryStream stream = new MemoryStream(Bytes);
return Image.FromStream(stream, true);
}
private void TxtUrl_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
BtnRunHtml.PerformClick();
}
else if (e.KeyCode == Keys.Down)
{
if (objectListView2.Visible)
{
objectListView2.SelectedObject = null;
objectListView2.SelectedIndex = 0;
objectListView2.Focus();
}
}
}
private void FrmWebGet_Load(object sender, EventArgs e)
{
List<string> autoc_list = new List<string>();
autoc_list.AddRange(RyFiles.ReadAllLines(Application.StartupPath + "\\SysDb\\AutoComplete\\post.txt"));
TxtPost.SetAutoCompleteList(autoc_list);
//TxtPost.AutoWordSelection = false;
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; //加上这一句
var highlight_menu = (ContextMenuStripHighlightText2)highlightEditor1.ContextMenuStrip;
highlight_menu.AddSeparatorMenu();
highlight_menu.AddMenu("将选中的内容作为Json分析", "").Click += AnalyJson_Click;
for (int i = 0; i < this.Controls.Count; i++)
{
switch (this.Controls[i])
{
case GroupBox gb:
gb.Click += Gb_Click;
break;
}
}
ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate;
}
private bool ValidateServerCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}
private void Gb_Click(object sender, EventArgs e)
{
objectListView2.Visible = false;
//RbGet.Focus();
switch ((this.DockPanel.FindForm()))
{
case Form1 frm:
frm.HideDownList();
break;
}
}
private void AnalyJson_Click(object sender, EventArgs e)
{
ContextMenuStrip menu =(ContextMenuStrip) (((ToolStripMenuItem)sender).Owner);
switch(menu.SourceControl)
{
case ScintillaNETV2.Scintilla rich_txt:
var SelectedText= rich_txt.SelectedText;
if (SelectedText == "") { SelectedText = rich_txt.Text; }
//if (Manager.Json.IsJson(SelectedText))
{
FrmJson frm = new FrmJson();
frm.Show(this.DockPanel);
frm.LoadJson(SelectedText);
}
break;
case RichTextBox rich_txt2:
var SelectedText2 = rich_txt2.SelectedText;
if (SelectedText2 == "") { SelectedText2 = rich_txt2.Text; }
//if (Manager.Json.IsJson(SelectedText2))
{
FrmJson frm = new FrmJson();
frm.Show(this.DockPanel);
frm.LoadJson(SelectedText2);
}
break;
}
}
private void BtnCtreateCShape_Click(object sender, EventArgs e)
{
}
public void AddUrl(string title,string url)
{
IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1)
{
var _title = title;
if(_title.Length==0)
{
var mode = url.Replace("?","&").GetStr("&a=","");
if (mode.IndexOf("&") > 0) { mode = mode.GetStr("", "&"); }
if(mode.Length==0)
{
mode = url.Replace("?", "&").GetStr("&Action=", "");
if (mode.IndexOf("&") > 0) { mode = mode.GetStr("", "&"); }
}
if (mode.Length == 0)
{
mode = url.Replace("?", "&").GetStr("&api=", "");
if (mode.IndexOf("&") > 0) { mode = mode.GetStr("", "&"); }
}
_title = mode;
}
RyQuickSQL mySQL = new RyQuickSQL("Urls");
mySQL.AddField("Name", _title);
mySQL.AddField("Url", url);
mySQL.AddField("Cookie", TxtCookie.Text);
mySQL.AddField("Postdata", TxtPost.Text);
mySQL.AddField("Header", TxtInputHeader.Text);
var method = "";
if (RbHead.Checked)
{
method="head";
}
else
{
method= RbGet.Checked ? "get" : "post";
}
mySQL.AddField("Method", method);
mySQL.AddField("UserAgent", CbbUserAgent.Text);
mySQL.AddField("Referer", CbbReferer.Text);
mySQL.AddField("ContentType", CbbContentType.Text);
mySQL.AddField("Encoding", CbbEncoding.Text);
DataSet ds = db.ReadData("select * from Urls where Url=@Url", mySQL);
if (ds.HaveData())
{
DataRow reader = ds.Tables[0].Rows[0];
#region
mySQL.AddFieldCalc("ClickCount", "ClickCount+1");//点击次数
mySQL.AddField("editTime", DateTime.Now);
db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + reader["id"].ToString(), mySQL);
#endregion
}
else
{
mySQL.AddField("ClickCount",1);
mySQL.AddField("editTime", DateTime.Now);
mySQL.AddField("addTime", DateTime.Now);
db.ExecuteNonQuery(mySQL.GetInsertSQL(),mySQL);
}
ds?.Dispose();
IDbInterface db2 = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
if (db2.ConnDb(Itrycn_Db.History_SQLConn) == 1)
{
mySQL.TableName = "HistoryUrl";
var md5 = rySafe.MD5Sha1.GetMD5(url + "|" + TxtPost.Text + "|" + TxtInputHeader.Text + "|" + method + "|" + CbbReferer.Text + "|" + CbbContentType.Text);
mySQL.AddField("MD5", md5);
DataSet ds_his = db2.ReadData("select * from HistoryUrl where Url=@Url and MD5=@MD5", mySQL);
if(ds_his.HaveData())
{
DataRow reader = ds_his.Tables[0].Rows[0];
#region
mySQL.AddFieldCalc("ClickCount", "ClickCount+1");//点击次数
mySQL.Remove("addTime");
db2.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + reader["id"].ToString(), mySQL);
#endregion
}
else
{
mySQL.AddField("ClickCount", 1);
mySQL.AddField("addTime", DateTime.Now);
db2.ExecuteNonQuery(mySQL.GetInsertSQL(), mySQL);
}
ds_his?.Dispose();
}
db2.Free();
}
db.Free();
}
bool proc_use = false;
private bool IsAddNewUrl = false;
private void ClickItem(bool run = false)
{
if (objectListView2.SelectedObject!=null)
{
TxtCookie.Text = "";
TxtInputHeader.Text = "";
var item = (UrlInfo)objectListView2.SelectedObject;
objectListView2.Visible = false;
Application.DoEvents();
proc_use = true;
string url = item.Url;
IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1)
{
db.AddParameter("url", url);
DataSet ds = db.ReadData("select * from Urls where Url=@url", db.GetParameter());
if(ds.HaveData())
{
DataRow row = ds.Tables[0].Rows[0];
SetValueByRich(TxtCookie,"Cookie");
SetValueByHightlight(TxtPost, "Postdata");
SetValueByRich(TxtInputHeader, "Header");
SetValue2(CbbUserAgent, "UserAgent");
SetValue(CbbReferer, "Referer");
SetValue2(CbbContentType, "ContentType");
SetValue3(CbbEncoding, "Encoding");
if (row["Method"].ToString().Length>0)
{
if(row["Method"].ToString()=="post")
{
RbPost.Checked = true;
}
else if (row["Method"].ToString() == "head")
{
RbHead.Checked = true;
}
else { RbGet.Checked = true; }
}
void SetValueByRich(ryControls.Controls.RichTextBox2 txt, string Field)
{
if (row[Field].ToString().Length > 0) { txt.Text = row[Field].ToString(); txt.Refresh(); }
else { txt.Text =""; txt.Refresh(); }
}
void SetValueByHightlight(ScintillaNETV2.Highlight.HighlightEditor txt, string Field)
{
if (row[Field].ToString().Length > 0) { txt.Text = row[Field].ToString(); txt.Refresh(); }
}
void SetValue2(ryControls.ComboBoxEx2 cbb, string Field)
{
if (row[Field].ToString().Length>0)
{
var have = false;
for (int i = 0; i < cbb.Items.Count; i++)
{
if(cbb.Items[i] is ComboPopupItem item2)
{
if(item2.ValueStr1== row[Field].ToString())
{
cbb.SelectedIndex = i;
have = true;
break;
}
}
}
if (!have)
{
cbb.Text = row[Field].ToString();
}
}
}
void SetValue3(ryControls.RyComboBox cbb, string Field)
{
if (row[Field].ToString().Length > 0) { cbb.Text = row[Field].ToString(); }
}
void SetValue(ryControls.TextBoxEx2 cbb, string Field)
{
if (row[Field].ToString().Length > 0) { cbb.Text = row[Field].ToString(); }
}
}
db.Free();
}
TxtUrl.Text = url;
IsAddNewUrl = false;
if (TxtCookie.Text != "") { tabPage2.Text = "Cookie(有数据)"; }
else { tabPage2.Text = "Cookie"; }
if (TxtInputHeader.Text != "") { tabPage7.Text = "Header(有数据)"; }
else { tabPage7.Text = "Header"; }
if (run)
{ BtnRunHtml.PerformClick(); }
proc_use = false;
}
else { objectListView2.Visible = false; }
}
private void Table1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Up)
{
if (objectListView2.SelectedObject!=null && objectListView2.SelectedIndex==0)
{
objectListView2.SelectedObject = null;
TxtUrl.Select();
TxtUrl.Focus();
//rySearch1.Select();
}
}
else if (e.KeyCode == Keys.Enter)
{
ClickItem();
}
}
private void TxtUrl_TextChanged2(object sender, EventArgs e)
{
if (proc_use) { return; }
string sql_where = " where 1=1";
if (TxtUrl.Text != "") { sql_where = " where (Name like @SearchText or Url like @SearchText or Des like @SearchText)"; }
#region
objectListView2.ClearObjects();
List<UrlInfo> list = new List<UrlInfo>();
IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1)
{
db.AddParameter("SearchText", "%" + TxtUrl.Text + "%");
db.AddParameter("today",DateTime.Now.Date);
Dictionary<string, Image> dict_icon = new Dictionary<string, Image>();
DataSet ds2 = db.ReadData("select * from Urls" + sql_where + " and editTime>=@today order by IsFav desc,editTime desc", db.GetParameter());
for (int i = 0; i < ds2.Tables[0].Rows.Count; i++)
{
DataRow row = ds2.Tables[0].Rows[i];
DateTime editTime = row["editTime"].ToDateTime();
Image icon = null;
try
{
var uri = new Uri(row["Url"].ToString());
if(dict_icon.ContainsKey(uri.Host))
{
icon=dict_icon[uri.Host];
}
else
{
if (System.IO.File.Exists(Application.StartupPath + "\\SysDb\\webicons\\" + uri.Host + ".png"))
{
icon = RyImage.LoadPic(Application.StartupPath + "\\SysDb\\webicons\\" + uri.Host + ".png");
}
else if (System.IO.File.Exists(Application.StartupPath + "\\UserDb\\webicons\\" + uri.Host + ".ico"))
{
icon = RyImage.LoadPic(Application.StartupPath + "\\UserDb\\webicons\\" + uri.Host + ".ico");
}
else if (System.IO.File.Exists(Application.StartupPath + "\\UserDb\\webicons\\" + uri.Host + ".png"))
{
icon = RyImage.LoadPic(Application.StartupPath + "\\UserDb\\webicons\\" + uri.Host + ".png");
}
dict_icon[uri.Host] = icon;
}
}
catch { }
var item = new UrlInfo()
{
Id = row["id"].ToInt(),
Name = row["Name"].ToString(),
Des = row["Des"].ToString(),
Url = row["Url"].ToString(),
ClickCount = row["ClickCount"].ToInt(),
Fav = row["IsFav"].ToInt() == 1,
Icon=icon
};
if (editTime >= DateTime.Now.AddMinutes(-10))
{
list.Insert(0, item);
}
else
{
list.Add(item);
}
}
ds2?.Dispose();
DataSet ds = db.ReadData("select * from Urls" + sql_where+ " and editTime<@today order by IsFav desc,date(editTime) desc,ClickCount desc", db.GetParameter());
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
DataRow row = ds.Tables[0].Rows[i];
DateTime editTime = row["editTime"].ToDateTime();
Image icon = null;
try
{
var uri = new Uri(row["Url"].ToString());
if (dict_icon.ContainsKey(uri.Host))
{
icon = dict_icon[uri.Host];
}
else
{
if (System.IO.File.Exists(Application.StartupPath + "\\SysDb\\webicons\\" + uri.Host + ".png"))
{
icon = RyImage.LoadPic(Application.StartupPath + "\\SysDb\\webicons\\" + uri.Host + ".png");
}
else if (System.IO.File.Exists(Application.StartupPath + "\\UserDb\\webicons\\" + uri.Host + ".ico"))
{
icon = RyImage.LoadPic(Application.StartupPath + "\\UserDb\\webicons\\" + uri.Host + ".ico");
}
else if (System.IO.File.Exists(Application.StartupPath + "\\UserDb\\webicons\\" + uri.Host + ".png"))
{
icon = RyImage.LoadPic(Application.StartupPath + "\\UserDb\\webicons\\" + uri.Host + ".png");
}
dict_icon[uri.Host] = icon;
}
}
catch { }
var item = new UrlInfo() {
Id = row["id"].ToInt(), Name = row["Name"].ToString(),
Des = row["Des"].ToString(),
Url = row["Url"].ToString(),
ClickCount = row["ClickCount"].ToInt(),
Fav = row["IsFav"].ToInt()==1,
Icon=icon
};
if (editTime >= DateTime.Now.AddMinutes(-10))
{
list.Insert(0,item);
}
else
{
list.Add(item);
}
}
ds?.Dispose();
db.Free();
objectListView2.AddObjects(list);
objectListView2.Visible = list.Count != 0;
objectListView2.BringToFront();
}
IsAddNewUrl = true;
#endregion
}
private void FrmWebGet_Click(object sender, EventArgs e)
{
objectListView2.Visible = false;
}
private void Table1_CellLostFocus(object sender, XPTable.Events.CellFocusEventArgs e)
{
if (e.Row == -1) { objectListView2.Visible = false; }
}
private void Table1_Leave(object sender, EventArgs e)
{
if(!TxtUrl.Focused)
{
objectListView2.Visible = false;
}
}
private void TxtUrl_Leave(object sender, EventArgs e)
{
if (IsAddNewUrl && !objectListView2.Visible)
{
if (TxtCookie.Text.Length > 0 && TxtInputHeader.Text.Length > 0)
{
if (MessageBox.Show("你修改了新Url,是否要清空Cookie和Header", "询问", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.OK)
{
TxtCookie.Text = "";
TxtInputHeader.Text = "";
}
}
else if (TxtCookie.Text.Length > 0)
{
if (MessageBox.Show("你修改了新Url,是否要清空Cookie", "询问", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.OK)
{
TxtCookie.Text = "";
}
}
else if (TxtInputHeader.Text.Length > 0)
{
if (MessageBox.Show("你修改了新Url,是否要清空Header", "询问", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.OK)
{
TxtInputHeader.Text = "";
}
}
if (CbbReferer.Text.Length > 0)
{
if (MessageBox.Show("你修改了新Url,是否要清空引用页?", "询问", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.OK)
{
CbbReferer.Text = "";
}
}
}
if (!objectListView2.Focused)
{
objectListView2.Visible = false;
}
}
private void Table1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ClickItem();
}
}
private void TxtPost_DoubleClick(object sender, EventArgs e)
{
//Start();
if (tabControl2.SelectedTab == tabPage12)
{
highlightEditor1.Focus();
}
new Thread(Start).Start();
void Start()
{
Thread.Sleep(100);
this.Invoke(new Action(() =>
{
var post = TxtPost.Text;
if (post.StartsWith("{", StringComparison.OrdinalIgnoreCase))
{
bool isJson = false;
try
{
var json_text = Manager.Json.ConvertJsonString(post);
isJson = true;
FrmJson frm = new FrmJson();
frm.BtnSave.Visible = true;
frm.toolStripSeparator1.Visible = true;
frm.menuRight1.SourceContent = null;
frm.Format(json_text);
frm.Size = new Size(1200, 900);
frm.StartPosition = FormStartPosition.Manual;
RyForm.ShowCenter(frm, this.ParentForm);
if (frm.ShowDialog()==DialogResult.OK)
{
try
{
JObject jo = (JObject)JsonConvert.DeserializeObject(frm.highlightEditor1.Text);
var aa = Newtonsoft.Json.JsonConvert.SerializeObject(jo, new Newtonsoft.Json.JsonSerializerSettings() { StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.EscapeNonAscii });
TxtPost.Text = aa;
BtnRunHtml.PerformClick();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "出错", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
catch {
}
if (!isJson)
{
.Controls.FrmText frm = new Controls.FrmText
{
Icon = Icon
};
frm.highlightEditor1.Visible = true;
frm.richTextBox1.Visible = false;
frm.highlightEditor1.SetHightlightText(post, "txt");
if (frm.ShowDialog() == DialogResult.OK)
{
try
{
JObject jo = (JObject)JsonConvert.DeserializeObject(frm.highlightEditor1.Text);
var aa = Newtonsoft.Json.JsonConvert.SerializeObject(jo, new Newtonsoft.Json.JsonSerializerSettings() { StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.EscapeNonAscii });
TxtPost.Text = aa;
BtnRunHtml.PerformClick();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "出错", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}
else
{
ShowAPIDialog();
}
}));
}
}
private void TxtPost_TextChanged(object sender, EventArgs e)
{
if (TxtPost.Text != "") { tabPage1.Text = "Post数据(有数据)"; }
else { tabPage1.Text = "Post数据"; }
}
private void TxtCookie_TextChanged(object sender, EventArgs e)
{
if (TxtCookie.Text != "") { tabPage2.Text = "Cookie(有数据)"; }
else { tabPage2.Text = "Cookie"; }
}
private void TxtInputHeader_TextChanged(object sender, EventArgs e)
{
if (TxtInputHeader.Text != "") { tabPage7.Text = "Header(有数据)"; }
else { tabPage7.Text = "Header"; }
}
private void ChkNoPreview_CheckedChanged(object sender, EventArgs e)
{
ChkHtmlPreview.Enabled = !ChkNoPreview.Checked;
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
var item = (UrlInfo)objectListView2.SelectedObject;
if (item == null) { return; }
IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1)
{
RyQuickSQL mySQL = new RyQuickSQL("Urls");
mySQL.AddField("IsFav", item.Fav ? 0 : 1);
db.ExecuteNonQuery(mySQL.GetUpdateSQL()+" where id="+item.Id,mySQL);
item.Fav = !item.Fav;
objectListView2.RefreshObject(item);
}
db.Free();
}
private void ContextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
var item = (UrlInfo)objectListView2.SelectedObject;
if (item == null) { return; }
ToolStripMenuItem.Text = item.Fav ? "取消收藏该项" : "置顶收藏该项";
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
var item = (UrlInfo)objectListView2.SelectedObject;
if (item == null) { return; }
if(item.ClickCount>5)
{
switch (MessageBox.Show("确认要删除该项记录吗?", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2))
{
case DialogResult.No:
return;
}
}
IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1)
{
db.ExecuteNonQuery("delete from Urls where id=" + item.Id);
objectListView2.RemoveObject(item);
}
db.Free();
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
var item = (UrlInfo)objectListView2.SelectedObject;
if (item == null) { return; }
IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1)
{
.Controls.FrmTitle frm = new .Controls.FrmTitle();
frm.TxtTitle.Text = item.Des;
if (frm.ShowDialog() == DialogResult.OK)
{
RyQuickSQL mySQL = new RyQuickSQL("Urls");
mySQL.AddField("Des", frm.TxtTitle.Text);
db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + item.Id, mySQL);
item.Des = frm.TxtTitle.Text;
objectListView2.RefreshObject(item);
}
}
db.Free();
}
private void BtnMore_Click(object sender, EventArgs e)
{
SuperPictureBox btn = (SuperPictureBox)sender;
Point p = new Point(0, btn.Height);
MenuMore.Items.Clear();
AddMenu("API编辑器", "api");
try
{
var uri = new Uri(TxtUrl.Text);
AddMenu("查看历史记录", "history_url");
var host = uri.Host.ToLower();
if(host.IndexOfEx("www.87g")==0 || host.IndexOfEx("www.3h3") == 0
||host.IndexOfEx("www.downxia") == 0 || host.IndexOfEx("www.downbank") == 0 || host.IndexOfEx("www.downxing") == 0 || host.IndexOfEx("downwn.com") == 0)
{
List<MenuTag> list = new List<MenuTag>
{
new MenuTag() { Title = "切换到【87G】87g.com", Site = "https://www.87g.com" },
new MenuTag() { Title = "切换到【87G】87g.cn", Site = "https://www.87g.cn" },
new MenuTag() { Title = "-", Site = "" },
new MenuTag() { Title = "切换到【当游】3h3.com", Site = "https://www.3h3.com" },
new MenuTag() { Title = "切换到【当游】3h3.cn", Site = "https://www.3h3.cn" },
new MenuTag() { Title = "-", Site = "" },
new MenuTag() { Title = "切换到【当下】downxia.com", Site = "https://www.downxia.com" },
new MenuTag() { Title = "切换到【当下】downxia.cn", Site = "https://www.downxia.cn" },
new MenuTag() { Title = "-", Site = "" },
new MenuTag() { Title = "切换到【当星网】downxing.com", Site = "https://www.downxing.com" },
new MenuTag() { Title = "切换到【当星网】downxing.cn", Site = "https://www.downxing.cn" },
new MenuTag() { Title = "-", Site = "" },
new MenuTag() { Title = "切换到【玩能网】downwn.com", Site = "https://downwn.com" }
};
AddMenu("-", "");
for (int i = 0; i < list.Count; i++)
{
if (list[i].Title=="-")
{
MenuMore.Items.Add(list[i].Title);
continue;
}
if (list[i].Site.IndexOfEx(host)>=0)
{continue;}
AddMenu(list[i].Title, list[i].Site);
}
if (MenuMore.Items.Count>0 && MenuMore.Items[MenuMore.Items.Count-1].Text=="")
{
MenuMore.Items[MenuMore.Items.Count - 1].Visible = false;
}
}
}
catch { }
MenuMore.Show(btn, p);
void AddMenu(string title, string site)
{
ToolStripItem item = MenuMore.Items.Add(title);
item.Tag= new MenuTag() { Site = site };
item.Click += Item_Click;
}
}
/// <summary>
/// 显示API编辑器
/// </summary>
private void ShowAPIDialog()
{
var have_error = false;
Uri uri = null;
try
{
uri = new Uri(TxtUrl.Text);
}
catch { have_error = true; }
try
{
if (RbPost.Checked)
{
RyWeb.UrlData urldata = new RyWeb.UrlData();
have_error=!urldata.Load(TxtPost.Text);
}
}
catch { have_error = true; }
if (have_error)
{
MessageBox.Show("API编辑器不支持当前内容。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (uri != null)
{
TxtPost.Focus();
APIEditor frm = new APIEditor();
frm.LoadData(uri, TxtPost.Text, RbGet.Checked);
if (frm.ShowDialog() == DialogResult.OK)
{
if (RbGet.Checked)
{
TxtUrl.Text = uri.Scheme + "://" + uri.Host + (uri.Port == 80 ? "" : (":" + uri.Port)) + uri.AbsolutePath + "?" + frm.SelectedPostDatas;
}
else
{
TxtPost.Text = frm.SelectedPostDatas;
}
}
frm.Dispose();
}
}
private void Item_Click(object sender, EventArgs e)
{
if(sender is ToolStripItem item)
{
if(item.Tag is MenuTag menuTag)
{
if(menuTag.Site=="api")
{
ShowAPIDialog();
return;
}
if (menuTag.Site.Length == 0) { return; }
var url = TxtUrl.Text;
if (menuTag.Site == "history_url")
{
FrmHistoryUrls frm = new FrmHistoryUrls();
frm.Icon = Icon;
frm.LoadDb(url);
if(frm.ShowDialog(this) == DialogResult.OK)
{
IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType);
if (db.ConnDb(Itrycn_Db.History_SQLConn) == 1)
{
DataSet ds = db.ReadData("select * from HistoryUrl where Id="+frm.SelectedId);
if (ds.HaveData())
{
DataRow row = ds.Tables[0].Rows[0];
SetValueByRich(TxtCookie, "Cookie");
SetValueByHightlight(TxtPost, "Postdata");
SetValueByRich(TxtInputHeader, "Header");
SetValue(CbbReferer, "Referer");
SetValue2(CbbContentType, "ContentType");
SetValue3(CbbEncoding, "Encoding");
if (TxtCookie.Text != "") { tabPage2.Text = "Cookie(有数据)"; }
else { tabPage2.Text = "Cookie"; }
if (TxtInputHeader.Text != "") { tabPage7.Text = "Header(有数据)"; }
else { tabPage7.Text = "Header"; }
if (row["Method"].ToString().Length > 0)
{
if (row["Method"].ToString() == "post")
{
RbPost.Checked = true;
}
else if (row["Method"].ToString() == "head")
{
RbHead.Checked = true;
}
else { RbGet.Checked = true; }
}
void SetValueByRich(ryControls.Controls.RichTextBox2 txt, string Field)
{
if (row[Field].ToString().Length > 0) { txt.Text = row[Field].ToString(); txt.Refresh(); }
else { txt.Text = ""; txt.Refresh(); }
}
void SetValueByHightlight(HighlightEditor txt, string Field)
{
if (row[Field].ToString().Length > 0) { txt.Text = row[Field].ToString(); txt.Refresh(); }
}
void SetValue(ryControls.TextBoxEx2 cbb, string Field)
{
if (row[Field].ToString().Length > 0) { cbb.Text = row[Field].ToString(); }
}
void SetValue2(ryControls.ComboBoxEx2 cbb, string Field)
{
if (row[Field].ToString().Length > 0) { cbb.Text = row[Field].ToString(); }
}
void SetValue3(ryControls.RyComboBox cbb, string Field)
{
if (row[Field].ToString().Length > 0) { cbb.Text = row[Field].ToString(); }
}
}
ds?.Dispose();
db.Free();
}
TxtUrl.Text = url;
}
frm.Dispose();
return;
}
var pos = url.IndexOfEx("//");
if(pos>=0)
{
pos = url.IndexOfEx("/", pos + 2);
if(pos>0)
{
proc_use = true;
TxtUrl.Text= menuTag.Site+ url.Substring(pos);
proc_use = false;
}
}
}
}
}
class MenuTag
{
public string Title { get; set; }
public string Site { get; set; }
}
private void RbGet_CheckedChanged(object sender, EventArgs e)
{
if(RbGet.Checked) TxtPost.Enabled = false;
}
private void RbPost_CheckedChanged(object sender, EventArgs e)
{
if (RbPost.Checked) TxtPost.Enabled = true;
}
private void TxtCookie_DoubleClick(object sender, EventArgs e)
{
ryControls.Controls.RichTextBox2 txt = (ryControls.Controls.RichTextBox2)sender;
.Controls.FrmText frm = new Controls.FrmText
{
Icon = Icon
};
frm.richTextBox1.Text = txt.Text;
if (frm.ShowDialog() == DialogResult.OK)
{
txt.Text = frm.richTextBox1.Text;
}
}
private void RbHead_CheckedChanged(object sender, EventArgs e)
{
if (RbHead.Checked) TxtPost.Enabled = false;
}
private void BtnSetting_Click(object sender, EventArgs e)
{
SuperPictureBox btn = (SuperPictureBox)sender;
Point p = new Point(0, btn.Height);
MenuSetting.Show(btn, p);
}
private HttpItem GetCodes()
{
string str = GetMethod();
HttpItem item = new HttpItem
{
URL = TxtUrl.Text.Trim(),
Method = str,
Cookie = this.TxtCookie.Text.Trim(),
Referer = this.CbbReferer.Text.Trim(),
Postdata = this.TxtPost.Text.Trim(),
Timeout = Convert.ToInt32(this.CbbTimeout.Text.Replace("秒", string.Empty).Trim()) * 0x3e8,
ReadWriteTimeout = Convert.ToInt32(this.CbbWriteTimeout.Text.Replace("秒", string.Empty).Trim()) * 0x3e8,
UserAgent = this.CbbUserAgent.Text,
ContentType = this.CbbContentType.Text,
Allowautoredirect = this.ChkJump.Checked,
ResultType = ChkGetPic.Checked ? ResultType.Byte : ResultType.String
};
if (CbbUserAgent.SelectedIndex != -1)
{
if (CbbUserAgent.SelectedItem is ComboPopupItem info2)
{
item.UserAgent = info2.ValueStr1;
}
}
if (!string.IsNullOrEmpty(this.CbbIp.Text.Trim()))
{
item.ProxyIp = this.CbbIp.Text.Trim();
}
if (!this.CbbEncoding.Text.Contains("自动"))
{
item.Encoding = Encoding.GetEncoding(this.CbbEncoding.Text.Trim());
}
if (TxtInputHeader.Text.Length > 0)
{
try
{
string[] item_header = TxtInputHeader.Text.Replace("\r", "").Split('\n');
for (int i = 0; i < item_header.Length; i++)
{
var split = item_header[i].Split(':');
if (split.Length == 2)
{
if (split[0].ToLower() == "accept")
{
item.Accept = split[1];
continue;
}
else if (split[0].ToLower() == "content-type")
{
item.ContentType = split[1];
continue;
}
}
item.Header.Add(item_header[i]);
}
}
catch (Exception exception)
{
}
}
return item;
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
HttpItem item = GetCodes();
this.RichHtml.Visible = true;
this.pictureBox1.Visible = false;
//this.SetHttpItem();
StringBuilder builder = new StringBuilder();
builder.Append(" HttpHelper http = new HttpHelper();\r\n");
builder.Append(" HttpItem item = new HttpItem()\r\n");
builder.Append(" {\r\n");
builder.Append(" URL = \"" + item.URL + "\",//URL 必需项 \r\n");
if (!this.CbbEncoding.Text.Trim().Contains("自动"))
{
builder.Append(" Encoding = System.Text.Encoding.GetEncoding( \"" + this.CbbEncoding.Text.Trim() + "\"),//URL 可选项 默认为Get \r\n");
}
builder.Append(" Method = \"" + item.Method + "\",//URL 可选项 默认为Get \r\n");
builder.Append(" Cookie = \"" + item.Cookie.Replace("\n", "\"+\n \"") + "\",//字符串Cookie 可选项 \r\n");
builder.Append(" Referer =\"" + item.Referer + "\",//来源URL 可选项 \r\n");
builder.Append(" Accept = \"" + item.Accept + "\",//Accept 可选项 \r\n");
builder.Append(" Postdata = \"" + item.Postdata.Replace("\n", "\"+\n \"") + "\",//Post数据 可选项GET时不需要写 \r\n");
builder.Append(" Timeout = " + item.Timeout + ",//连接超时时间 可选项默认为100000 \r\n");
builder.Append(" ReadWriteTimeout = " + item.ReadWriteTimeout + ",//写入Post数据超时时间 可选项默认为30000 \r\n");
builder.Append(" UserAgent = \"" + item.UserAgent + "\",//用户的浏览器类型,版本,操作系统 可选项有默认值 \r\n");
builder.Append(" ContentType = \"" + item.ContentType + "\",//返回类型 可选项有默认值 \r\n");
builder.Append(" Allowautoredirect = " + item.Allowautoredirect.ToString().ToLower() + ",//是否根据301跳转 可选项 \r\n");
builder.Append(" //CerPath = \"d:\\123.cer\",//证书绝对路径 可选项不需要证书时可以不写这个参数 \r\n");
builder.Append(" //Connectionlimit = 1024,//最大连接数 可选项 默认为1024 \r\n");
builder.Append(" ProxyIp = \"" + item.ProxyIp + "\",//代理服务器ID 可选项 不需要代理 时可以不设置这三个参数 \r\n");
builder.Append(" //ProxyPwd = \"123456\",//代理服务器密码 可选项 \r\n");
builder.Append(" //ProxyUserName = \"administrator\",//代理服务器账户名 可选项 \r\n");
builder.Append(" ResultType = " + (ChkGetPic.Checked ? "ResultType.Byte" : "ResultType.String") + "\r\n");
builder.Append(" };\r\n");
if (TxtInputHeader.Text.Length > 0)
{
try
{
string[] item_header = TxtInputHeader.Text.Replace("\r", "").Split('\n');
for (int i = 0; i < item_header.Length; i++)
{
var split = item_header[i].Split(':');
if (split.Length == 2)
{
if (split[0].ToLower() == "accept")
{
continue;
}
else if (split[0].ToLower() == "content-type")
{
continue;
}
}
builder.Append(" item.Header.Add(\""+ item_header[i]+"\");\r\n");
//item.Header.Add(item_header[i]);
}
}
catch (Exception exception)
{
}
}
builder.Append("");
builder.Append(" HttpResult result = http.GetHtml(item);\r\n");
builder.Append(" string html = result.Html;\r\n");
builder.Append(" string cookie = result.Cookie;\r\n");
if (ChkGetPic.Checked)
{
builder.Append(" \r\n\r\n");
builder.Append(" /// <summary>\r\n");
builder.Append(" /// 字节数组生成图片\r\n");
builder.Append(" /// </summary>\r\n");
builder.Append(" /// <param name=\"Bytes\">字节数组</param>\r\n");
builder.Append(" /// <returns>图片</returns>\r\n");
builder.Append(" private Image byteArrayToImage(byte[] Bytes)\r\n");
builder.Append(" {\r\n");
builder.Append(" MemoryStream ms = new MemoryStream(Bytes);\r\n");
builder.Append(" return Bitmap.FromStream(ms,true);\r\n");
builder.Append(" }\r\n");
}
RichHtml.Text = builder.ToString();
highlightEditor1.SetHightlightText(builder.ToString(), "c#");
tabControl2.SelectedTab = tabPage12;
}
private string GetMethod()
{
string str = "get";
if (RbGet.Checked)
{
str = "get";
}
if (RbPost.Checked)
{
str = "post";
}
if (RbHead.Checked)
{
str = "head";
}
return str;
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
if(TxtUrl.Text.Length==0)
{
MessageBox.Show("请先输入网址。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
try
{
JObject jo = new JObject
{
{ "SoftVer", RySoft.VersionStr },
{ "Url", TxtUrl.Text },
{ "Method", GetMethod() },
{ "Encoding", CbbEncoding.Text },
{ "Timeout", CbbTimeout.Text },
{ "WriteTimeout", CbbWriteTimeout.Text },
{ "Jump_On", ChkJump.Checked },
{ "GetPic_On", ChkGetPic.Checked },
{ "NoPreview_On", ChkNoPreview.Checked },
{ "HtmlPreview_On", ChkHtmlPreview.Checked },
{ "ContentType", CbbContentType.Text },
{ "UserAgent", CbbUserAgent.Text },
{ "Ip", CbbIp.Text },
{ "Referer", CbbReferer.Text },
{ "Post", TxtPost.Text },
{ "Cookie", TxtCookie.Text },
{ "InputHeader", TxtInputHeader.Text }
};
RyWeb.QuickWeb web = new RyWeb.QuickWeb();
var http = web.Post("http://gs2.3h3.com:8081/DyV2.aspx", "api=QuickUrl&Method=set&qText=" + web.UrlEncode(jo.ToString()));
if (http.StatusCode == HttpStatusCode.OK)
{
var json = JObject.Parse(http.Html);
var guid = json.GetJsonValue("guid", "");
if (guid.Length > 0)
{
RyFiles.CopyToClip("qurl://" + guid + "/");
Itrycn_Db.last_clip_text = "qurl://" + guid + "/";
MessageBox.Show("已复制到剪切板", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("导出出错", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show("导出失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
var quick_url = Clipboard.GetText();
if (quick_url.IndexOfEx("qurl://") >= 0)
{
var guid = quick_url.GetStr("qurl://", "/");
if (quick_url.Length > 0)
{
RyWeb.QuickWeb web = new RyWeb.QuickWeb();
var http = web.Post("http://gs2.3h3.com:8081/DyV2.aspx", "api=QuickUrl&Method=get&guid=" + web.UrlEncode(guid));
if (http.StatusCode == HttpStatusCode.OK)
{
var json = JObject.Parse(http.Html);
var qText = json.GetJsonValue("qText", "");
if (qText.Length > 0)
{
proc_use = true;
var json_set = JObject.Parse(qText);
var Method = json_set.GetJsonValue("Method", "");
if (Method == "get") { RbGet.Checked = true; }
else if (Method == "post") { RbPost.Checked = true; }
else if (Method == "head") { RbHead.Checked = true; }
else { RbGet.Checked = true; }
TxtUrl.Text = json_set.GetJsonValue("Url", "");
IsAddNewUrl = false;
CbbEncoding.Text = json_set.GetJsonValue("Encoding", "");
CbbTimeout.Text = json_set.GetJsonValue("Timeout", "");
CbbWriteTimeout.Text = json_set.GetJsonValue("WriteTimeout", "");
ChkJump.Checked = json_set.GetJsonValue("Jump_On", true);
ChkGetPic.Checked = json_set.GetJsonValue("GetPic_On", false);
ChkNoPreview.Checked = json_set.GetJsonValue("NoPreview_On", true);
ChkHtmlPreview.Checked = json_set.GetJsonValue("HtmlPreview_On", false);
CbbContentType.Text = json_set.GetJsonValue("ContentType", "");
CbbUserAgent.Text = json_set.GetJsonValue("UserAgent", "");
CbbIp.Text = json_set.GetJsonValue("Ip", "");
CbbReferer.Text = json_set.GetJsonValue("Referer", "");
TxtPost.Text = json_set.GetJsonValue("Post", "");
TxtCookie.Text = json_set.GetJsonValue("Cookie", "");
TxtInputHeader.Text = json_set.GetJsonValue("InputHeader", "");
proc_use = false;
BtnRunHtml.PerformClick();
}
else
{
MessageBox.Show("没有找到该配置信息", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
else
{
MessageBox.Show("从剪切板里没有找到配置", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show("从剪切板里没有找到配置2", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch(Exception ex) {
MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void FrmWebGet_Activated(object sender, EventArgs e)
{
}
private void BtnShare_Click(object sender, EventArgs e)
{
ToolStripMenuItem.PerformClick();
}
private void TxtPost_EnabledChanged(object sender, EventArgs e)
{
label1.Visible = !TxtPost.Enabled;
}
private void curl代码ToolStripMenuItem_Click(object sender, EventArgs e)
{
if(ChkGetPic.Checked)
{
MessageBox.Show("暂不支持当前选项的curl代码生成,请更改选项。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
HttpItem item = GetCodes();
this.RichHtml.Visible = true;
this.pictureBox1.Visible = false;
//this.SetHttpItem();
string curl = "curl -A '"+ item.UserAgent + "'";
curl += " -H '" + item.Accept + "'";
curl += " -H '" + item.ContentType + "'";
if (TxtInputHeader.Text.Length > 0)
{
try
{
string[] item_header = TxtInputHeader.Text.Replace("\r", "").Split('\n');
for (int i = 0; i < item_header.Length; i++)
{
var split = item_header[i].Split(':');
if (split.Length == 2)
{
if (split[0].ToLower() == "accept")
{
continue;
}
else if (split[0].ToLower() == "content-type")
{
continue;
}
}
curl += " -H '" + item_header[i] + "'";
}
}
catch (Exception exception)
{
}
}
curl += " -H 'charset=" + (item.Encoding==null?"utf-8": item.Encoding.BodyName)+ "'";
curl += " -b '" + item.Cookie.Replace("\\n", "\\\\n").Replace("\r", "").Replace("\n", "\\n") + "'";
if (item.Referer.Length > 0)
{
curl += " -e '" + item.Referer + "'";
}
if (item.Postdata.Length > 0 && item.Method.ToUpper() == "POST")
{
curl += " -d '" + item.Postdata.Replace("\\n", "\\\\n").Replace("\r","").Replace("\n","\\n") + "'";
}
if(item.Method.ToUpper() == "POST")
{
curl += " -X POST";
}
else if (item.Method.ToUpper() == "GET")
{
curl += " -X GET";
}
else if (item.Method.ToUpper() == "HEAD")
{
curl += " -X HEAD";
}
if(item.Timeout>0)
{
curl += " --connect-timeout "+(item.Timeout/1000);
}
if (item.ReadWriteTimeout > 0)
{
curl += " --max-time " + (item.ReadWriteTimeout / 1000);
}
curl += " '"+item.URL+"'";
RichHtml.Text = curl;
highlightEditor1.SetHightlightText(curl, "bat");
tabControl2.SelectedTab = tabPage12;
}
private void CbbUserAgent_SelectedIndexChanged(object sender, EventArgs e)
{
if (CbbUserAgent.SelectedIndex != -1)
{
if (CbbUserAgent.SelectedItem is ComboPopupItem info2)
{
CbbUserAgent.ToolTipText= info2.ValueStr1;
}
else
{
CbbUserAgent.ToolTipText = CbbUserAgent.Text;
}
}
else
{
CbbUserAgent.ToolTipText = CbbUserAgent.Text;
}
}
}
public class UrlInfo
{
public int Id { get; set; }=0;
public string Url { get; set; } = "";
public string Name { get; set; } = "";
public string Des { get; set; } = "";
public int ClickCount { get; set; } = 0;
/// <summary>
/// 是否收藏
/// </summary>
public bool Fav { get; set; } = false;
public Image Icon { get; set; } = null;
}
}