829 lines
37 KiB
C#
829 lines
37 KiB
C#
using AllBase;
|
|
using AllBase.Helper;
|
|
using CefSharp;
|
|
using CefSharp.WinForms;
|
|
using TemuKJD.Helper;
|
|
using TemuKJD.KJDForms.BaseForms;
|
|
using NaiBa.CefHelper;
|
|
using NaiBa.Util;
|
|
using NaiBa.Util.Extension;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Diagnostics;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace TemuKJD.DashBoardForms
|
|
{
|
|
public partial class DashBoardForm : Form
|
|
{
|
|
public enum InviteTypeEnum
|
|
{
|
|
Invite,
|
|
Chat,
|
|
}
|
|
|
|
public class DaRenSettings
|
|
{
|
|
/// <summary>
|
|
/// 要采集的总页码数量
|
|
/// </summary>
|
|
public int TotalPage { get; set; } = 10;
|
|
/// <summary>
|
|
/// 发送邀约操作操作间隔时间
|
|
/// </summary>
|
|
public int Interval { get; set; } = 10;
|
|
/// <summary>
|
|
/// 翻页操作间隔时间
|
|
/// </summary>
|
|
public int PageInterval { get; set; } = 10;
|
|
public string ChatWords { get; set; } = "老板您好!";
|
|
public InviteTypeEnum InviteType { get; set; } = InviteTypeEnum.Invite;
|
|
}
|
|
|
|
private Point mouseOffset; // 记录鼠标指针的坐标
|
|
private bool isMouseDown; // 记录鼠标左键是否按下
|
|
|
|
private ChromiumWebBrowser cefWebBrowser = null;
|
|
private ChromiumWebBrowser cefWebBrowserDetail = null;
|
|
private DaRenSettings drSetting;
|
|
private bool IsOpenDaRenPage = false;
|
|
|
|
public DashBoardForm()
|
|
{
|
|
InitializeComponent();
|
|
this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
|
|
}
|
|
|
|
private void DashBoardForm_Load(object sender, EventArgs e)
|
|
{
|
|
if (BaseClass.Ico != null)
|
|
this.Icon = BaseClass.Ico;
|
|
|
|
this.WindowState = FormWindowState.Maximized;
|
|
max.Style.BackgroundImage = Properties.Resources.normal;
|
|
max.StyleMouseOver.BackgroundImage = Properties.Resources.normal_hover;
|
|
this.Padding = new Padding(2);
|
|
|
|
this.drSetting = NaiBa.Util.Helper.ConfigHelper.LoadConfig<DaRenSettings>("daren_settings");
|
|
if (drSetting == null)
|
|
drSetting = new DaRenSettings();
|
|
|
|
this.txtChatWords.Text = drSetting.ChatWords;
|
|
this.txtInterval.Text = drSetting.Interval.ToString();
|
|
this.txtTotalPage.Text = drSetting.TotalPage.ToString();
|
|
this.rbInvite.CheckedChanged -= rbInvite_CheckedChanged;
|
|
this.rbChat.CheckedChanged -= rbChat_CheckedChanged;
|
|
if (drSetting.InviteType == InviteTypeEnum.Invite)
|
|
this.rbInvite.Checked = true;
|
|
else
|
|
this.rbChat.Checked = true;
|
|
this.rbInvite.CheckedChanged += rbInvite_CheckedChanged;
|
|
this.rbChat.CheckedChanged += rbChat_CheckedChanged;
|
|
rbInvite.Checked = true;
|
|
|
|
for (int i = 0; i < GlobalConfig.ShopLoginList.Count; i++)
|
|
{
|
|
var shop = GlobalConfig.ShopLoginList[i];
|
|
this.cmbShop.Items.Add(shop.ShopAccount);
|
|
}
|
|
this.cmbShop.SelectedIndex = 0;
|
|
|
|
string cookie = "";
|
|
if (GlobalConfig.ShopLoginList.Count > 0)
|
|
{
|
|
cookie = GlobalConfig.ShopLoginList[0].Cookies;
|
|
}
|
|
InitCef(cookie);
|
|
}
|
|
|
|
private void close_Click(object sender, EventArgs e)
|
|
{
|
|
{
|
|
if (BaseMsgForm.ShowConfirm("是否关闭客户端?", "系统提示", FormLevel.SMALL).DialogResult.Equals(DialogResult.Cancel))
|
|
return;
|
|
else
|
|
Process.GetCurrentProcess().Kill();
|
|
}
|
|
}
|
|
|
|
private void max_Click(object sender, EventArgs e)
|
|
{
|
|
if (WindowState.Equals(FormWindowState.Normal))
|
|
{
|
|
WindowState = FormWindowState.Maximized;
|
|
max.Style.BackgroundImage = Properties.Resources.normal;
|
|
max.StyleMouseOver.BackgroundImage = Properties.Resources.normal_hover;
|
|
this.Padding = new Padding(0);
|
|
}
|
|
else if (WindowState.Equals(FormWindowState.Maximized))
|
|
{
|
|
WindowState = FormWindowState.Normal;
|
|
max.Style.BackgroundImage = Properties.Resources.max;
|
|
max.StyleMouseOver.BackgroundImage = Properties.Resources.max_hover;
|
|
this.Padding = new Padding(1);
|
|
}
|
|
}
|
|
|
|
private void min_Click(object sender, EventArgs e)
|
|
{
|
|
WindowState = FormWindowState.Minimized;
|
|
ShowInTaskbar = true;
|
|
}
|
|
private void pnlBanner_MouseDoubleClick(object sender, MouseEventArgs e)
|
|
{
|
|
max_Click(null, null);
|
|
}
|
|
|
|
private void pnlBanner_MouseDown(object sender, MouseEventArgs e)
|
|
{
|
|
if (e.Button == MouseButtons.Left)
|
|
{
|
|
mouseOffset = new Point(-e.X, -e.Y);
|
|
isMouseDown = true;
|
|
}
|
|
}
|
|
|
|
private void pnlBanner_MouseMove(object sender, MouseEventArgs e)
|
|
{
|
|
if (isMouseDown)
|
|
{
|
|
//获取鼠标的位置
|
|
Point mousePos = MousePosition;
|
|
mousePos.Offset(mouseOffset.X, mouseOffset.Y);
|
|
Location = mousePos;
|
|
}
|
|
}
|
|
|
|
private void pnlBanner_MouseUp(object sender, MouseEventArgs e)
|
|
{
|
|
isMouseDown = false;
|
|
}
|
|
|
|
void InitCef(string cookie = "")
|
|
{
|
|
string mainUrl = "https://fxg.jinritemai.com/ffa/mshop/homepage/index";
|
|
//mainUrl = "https://buyin.jinritemai.com/mpa/account/roles-select?target_url=/dashboard/servicehall/daren-square";
|
|
string darenUrl = "https://buyin.jinritemai.com/dashboard/servicehall/daren-square";
|
|
// GlobalConfig.DouUserCookies;
|
|
if (cefWebBrowser == null)
|
|
{
|
|
cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser("about:blank", true);
|
|
var lifeSapnHandler = new LifeSpanHandlerLocal(PopWindowType.NewTitleWindow);
|
|
lifeSapnHandler.OnPop += LifeSapnHandler_OnPop;
|
|
cefWebBrowser.LifeSpanHandler = lifeSapnHandler;
|
|
cefWebBrowser.KeyboardHandler = new NaiBa.CefHelper.Handler.KeyboardHandler();
|
|
cefWebBrowser.FrameLoadEnd += CefWebBrowser_FrameLoadEnd;
|
|
cefWebBrowser.AddressChanged += CefWebBrowser_AddressChanged;
|
|
cefWebBrowser.Dock = DockStyle.Fill;
|
|
|
|
//var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, cefWebBrowser.RequestContext.GetCookieManager(null));
|
|
var cookieManager = Cef.GetGlobalCookieManager();
|
|
//cookieManager.SetStoragePath(Environment.CurrentDirectory, true);
|
|
var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, cookieManager);
|
|
|
|
splitContainer1.Panel2.Controls.Add(cefWebBrowser);
|
|
|
|
Task.Run(() =>
|
|
{
|
|
while (true)
|
|
{
|
|
Thread.Sleep(15000);
|
|
|
|
//var jsCode = "window.localStorage;";
|
|
//var task = cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsCode, null);
|
|
//task.Wait(5000);
|
|
//var result = task.Result.Result;
|
|
//var dic = result as IDictionary<string, object>;
|
|
//GlobalConfig.dicLocalStorage = dic;
|
|
//StartUp.SaveDouLocalStorage();
|
|
}
|
|
});
|
|
|
|
Task.Run(() =>
|
|
{
|
|
do
|
|
{
|
|
Thread.Sleep(10);
|
|
}
|
|
while (cefWebBrowser == null || !cefWebBrowser.IsBrowserInitialized || cefWebBrowser.IsLoading);
|
|
|
|
var jsCode = "";
|
|
if (GlobalConfig.dicLocalStorage != null)
|
|
{
|
|
foreach (var key in GlobalConfig.dicLocalStorage.Keys)
|
|
{
|
|
if (GlobalConfig.dicLocalStorage[key] is string)
|
|
{
|
|
jsCode += "localStorage.setItem('" + key + "', '" + GlobalConfig.dicLocalStorage[key] + "');\r\n";
|
|
}
|
|
}
|
|
var ta0 = cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
|
|
ta0.Wait(5000);
|
|
}
|
|
|
|
cefWebBrowser.Load("https://fxg.jinritemai.com/ffa/mshop/homepage/index");
|
|
do
|
|
{
|
|
Thread.Sleep(1000);
|
|
}
|
|
while (cefWebBrowser.IsLoading);
|
|
Thread.Sleep(AllBase.Randomx.GetId(5000, 6000));
|
|
|
|
var jsStr = clickJsElementStr + "getElement('精选联盟').click();";
|
|
var ta2 = cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr);
|
|
ta2.Wait(8000);
|
|
do
|
|
{
|
|
Thread.Sleep(1000);
|
|
}
|
|
while (cefWebBrowser.IsLoading);
|
|
Thread.Sleep(AllBase.Randomx.GetId(2000, 3000));
|
|
|
|
retry:
|
|
jsStr = "window.location.href='" + darenUrl + "';";
|
|
var ta3 = cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr);
|
|
ta3.Wait(8000);
|
|
do
|
|
{
|
|
Thread.Sleep(1000);
|
|
}
|
|
while (cefWebBrowser.IsLoading);
|
|
Thread.Sleep(AllBase.Randomx.GetId(4000, 5000));
|
|
|
|
jsStr = clickJsElementStr +
|
|
"function clickBtn(txt) {\r\n" +
|
|
" if (document.body.innerHTML.indexOf('加载失败') >= 0)\r\n" +
|
|
" return '加载失败';\r\n" +
|
|
" return 'ok';\r\n" +
|
|
"}\r\n" +
|
|
"clickBtn('添加商品');\r\n";
|
|
var ta4 = cefWebBrowser.GetBrowser().MainFrame.EvaluateScriptAsync(jsStr);
|
|
ta4.Wait();
|
|
if (ta4.Result?.Result?.ToString() == "加载失败" || ta4.Result?.Result?.ToString() == null)
|
|
goto retry;
|
|
|
|
var sleepTime = 2500;
|
|
while (true)
|
|
{
|
|
try
|
|
{
|
|
Thread.Sleep(sleepTime);
|
|
var jsStr1 =
|
|
"function ClosePopWindow(txt) {\r\n" +
|
|
" var result = 'no_pop'\r\n" +
|
|
" var item = document.getElementsByClassName(txt);\r\n" +
|
|
" if (document.body.innerHTML.indexOf('重要消息') < 0) return result;\r\n" +
|
|
" for(i = 0; i < item.length; i++) {\r\n" +
|
|
" item[i].click();\r\n" +
|
|
" result = 'success'\r\n" +
|
|
" }\r\n" +
|
|
" return result;\r\n" +
|
|
"}\r\n" +
|
|
"ClosePopWindow('anticon-close-circle');\r\n" +
|
|
"ClosePopWindow('ant-modal-close-x');\r\n";
|
|
var jsStr2 = "function clickPopWindow(txt) {\r\n"
|
|
+ "var child = document.body.firstElementChild;\r\n"
|
|
+ "var element1 = null;\r\n"
|
|
+ " while (child) {\r\n"
|
|
+ " if (child.innerHTML.indexOf(txt) >= 0) {\r\n"
|
|
+ " element1 = child;\r\n"
|
|
+ " if (child.firstElementChild) {\r\n"
|
|
+ " child = child.firstElementChild; continue;\r\n"
|
|
+ " } else break;\r\n"
|
|
+ " }\r\n"
|
|
+ " child = child.nextElementSibling;\r\n"
|
|
+ " }\r\n"
|
|
+ " if (element1 && element1.innerHTML === txt) {\r\n"
|
|
+ " element1.click(); return 'success';\r\n"
|
|
+ " } else return 'no_pop';\r\n"
|
|
+ "}\r\n"
|
|
//+ "clickPopWindow('我知道了');\r\n"
|
|
+ "clickPopWindow('知道了');\r\n"
|
|
+ "clickPopWindow('完 成');\r\n"
|
|
+ "clickPopWindow('下一个');\r\n";
|
|
var success1 = false;
|
|
if (cefWebBrowser.IsBrowserInitialized && !cefWebBrowser.IsLoading)
|
|
{
|
|
var t1 = cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsStr1);
|
|
t1.Wait(1000);
|
|
var t2 = cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsStr2);
|
|
t2.Wait(1000);
|
|
if (t1.Result?.Result?.ToString() == "success" || t2.Result?.Result?.ToString() == "success")
|
|
success1 = true;
|
|
else
|
|
success1 = false;
|
|
}
|
|
var success2 = false;
|
|
if (cefWebBrowserDetail != null && cefWebBrowserDetail.IsBrowserInitialized && !cefWebBrowserDetail.IsLoading)
|
|
{
|
|
var t1 = cefWebBrowserDetail.GetMainFrame().EvaluateScriptAsync(jsStr1);
|
|
t1.Wait(1000);
|
|
var t2 = cefWebBrowserDetail.GetMainFrame().EvaluateScriptAsync(jsStr2);
|
|
t2.Wait(1000);
|
|
if (t1.Result?.Result?.ToString() == "success" || t2.Result?.Result?.ToString() == "success")
|
|
success2 = true;
|
|
else
|
|
success2 = false;
|
|
}
|
|
if (success1 || success2)
|
|
{
|
|
sleepTime = Randomx.GetId(550, 650);
|
|
}
|
|
else
|
|
sleepTime = Randomx.GetId(1500, 2000);
|
|
}
|
|
catch (Exception ex) { }
|
|
}
|
|
});
|
|
}
|
|
else
|
|
{
|
|
//CEFBrowser.DeleteCookie(cefWebBrowser.RequestContext.GetCookieManager(null));
|
|
CEFBrowser.DeleteCookie(Cef.GetGlobalCookieManager());
|
|
|
|
//var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, cefWebBrowser.RequestContext.GetCookieManager(null));
|
|
var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, Cef.GetGlobalCookieManager());
|
|
t.Wait(5000);
|
|
|
|
cefWebBrowser.Load(mainUrl);
|
|
}
|
|
}
|
|
|
|
private void LifeSapnHandler_OnPop(object sender, PopData e)
|
|
{
|
|
if (e.Url == "https://fxg.jinritemai.com/alliance/common/redirectBuyin?target_url=%2Fdashboard")
|
|
{
|
|
cefWebBrowser.Load(e.Url);
|
|
return;
|
|
}
|
|
|
|
string cookie = GlobalConfig.DouUserCookies;
|
|
if (cefWebBrowserDetail == null)
|
|
{
|
|
//cefWebBrowserDetail = CEFBrowser.CreateChromiumWebBrowser(e.Url, false);
|
|
cefWebBrowserDetail = CEFBrowser.CreateChromiumWebBrowser(e.Url);
|
|
var lifeSapnHandler = new LifeSpanHandlerLocal(PopWindowType.NewTitleWindow);
|
|
lifeSapnHandler.OnPop += LifeSapnHandler_OnPop;
|
|
cefWebBrowserDetail.LifeSpanHandler = lifeSapnHandler;
|
|
cefWebBrowserDetail.KeyboardHandler = new NaiBa.CefHelper.Handler.KeyboardHandler();
|
|
cefWebBrowserDetail.FrameLoadEnd += CefWebBrowser_FrameLoadEnd;
|
|
cefWebBrowserDetail.AddressChanged += CefWebBrowser_AddressChanged;
|
|
cefWebBrowserDetail.Dock = DockStyle.Fill;
|
|
|
|
//var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, cefWebBrowserDetail.RequestContext.GetCookieManager(null));
|
|
//var t = CEFBrowser.SetCookieAsync("jinritemai.com", cookie, Cef.GetGlobalCookieManager());
|
|
|
|
Task.Run(() =>
|
|
{
|
|
while (true)
|
|
{
|
|
Thread.Sleep(15000);
|
|
|
|
//var jsCode = "window.localStorage;";
|
|
//var task = cefWebBrowserDetail.GetMainFrame().EvaluateScriptAsync(jsCode, null);
|
|
//task.Wait(5000);
|
|
//var result = task.Result.Result;
|
|
//var dic = result as IDictionary<string, object>;
|
|
//GlobalConfig.dicLocalDetailStorage = dic;
|
|
//StartUp.SaveDouLocalDetailStorage();
|
|
}
|
|
});
|
|
|
|
Invoke(new Action(() =>
|
|
{
|
|
splitContainer1.Panel2.Controls.Add(cefWebBrowserDetail);
|
|
btnDetailForm_Click(null, null);
|
|
pnlDetailForm.Visible = true;
|
|
}));
|
|
}
|
|
else
|
|
{
|
|
cefWebBrowserDetail.Load(e.Url);
|
|
Invoke(new Action(() =>
|
|
{
|
|
btnDetailForm_Click(null, null);
|
|
}));
|
|
}
|
|
|
|
Task.Run(() =>
|
|
{
|
|
for (int i = 0; i < 1000 && (cefWebBrowserDetail.IsBrowserInitialized == false || cefWebBrowserDetail.IsLoading); i++)
|
|
{
|
|
Thread.Sleep(10);
|
|
}
|
|
|
|
var jsCode = "";
|
|
if (GlobalConfig.dicLocalDetailStorage != null)
|
|
{
|
|
foreach (var key in GlobalConfig.dicLocalDetailStorage.Keys)
|
|
{
|
|
if (GlobalConfig.dicLocalDetailStorage[key] is string)
|
|
{
|
|
jsCode += "localStorage.setItem('" + key + "', '" + GlobalConfig.dicLocalDetailStorage[key] + "');\r\n";
|
|
}
|
|
}
|
|
cefWebBrowserDetail.GetBrowser().MainFrame.ExecuteJavaScriptAsync(jsCode);
|
|
}
|
|
|
|
// 达人邀约
|
|
if (drSetting.InviteType == InviteTypeEnum.Invite)
|
|
{
|
|
if (IsOpenDaRenPage)
|
|
{
|
|
while (cefWebBrowserDetail.IsLoading)
|
|
Thread.Sleep(Randomx.GetId(500, 800));
|
|
retry1:
|
|
Thread.Sleep(Randomx.GetId(500, 1000));
|
|
jsCode = "function jsFunc1() {" +
|
|
" if (document.body.innerHTML.indexOf('>待回复</span>') > 0 || document.body.innerHTML.indexOf('>已同意</span>') > 0) " +
|
|
" return 'had';" +
|
|
" if (document.getElementsByClassName('contact-btn-text text4').length > 0) {" +
|
|
" document.getElementsByClassName('contact-btn-text text4')[0].click(); " +
|
|
" return 'ok';" +
|
|
" }" +
|
|
" return document.body.innerHTML.indexOf('加载失败,请稍后重试') >= 0 ? 'error' : 'noBtn'; " +
|
|
"} " +
|
|
"jsFunc1();";
|
|
var t1 = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
|
|
t1.Wait(2000);
|
|
if (t1.Result?.Result?.ToString() == "had")
|
|
{
|
|
IsOpenDaRenPage = false;
|
|
return;
|
|
}
|
|
else if (t1.Result?.Result?.ToString() != "ok")
|
|
{
|
|
Thread.Sleep(Randomx.GetId(800, 1500));
|
|
if (t1.Result?.Result?.ToString() == null || t1.Result?.Result?.ToString() == "error")
|
|
{
|
|
cefWebBrowserDetail.Reload();
|
|
}
|
|
goto retry1;
|
|
}
|
|
Thread.Sleep(Randomx.GetId(500, 800));
|
|
}
|
|
if (IsOpenDaRenPage)
|
|
{
|
|
Thread.Sleep(Randomx.GetId(500, 800));
|
|
jsCode = "function jsFx() {var btns = document.getElementsByClassName('ant-btn ant-btn-primary');" +
|
|
" for (i = 0; i < btns.length; i++) " +
|
|
" {" +
|
|
" if (btns[i].innerHTML.indexOf('我知道了') > 0)" +
|
|
" {" +
|
|
" btns[i].click();" +
|
|
" }" +
|
|
" }" +
|
|
"} jsFx();";
|
|
var tx = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
|
|
tx.Wait(2000);
|
|
|
|
Thread.Sleep(Randomx.GetId(500, 800));
|
|
retry2:
|
|
Thread.Sleep(Randomx.GetId(1200, 2400));
|
|
jsCode = "function jsFunc2() { document.getElementsByClassName('text4 add-product-last-operate')[0].click(); return 'ok'} jsFunc2();";
|
|
var t2 = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
|
|
t2.Wait(2000);
|
|
if (t2.Result?.Result?.ToString() != "ok")
|
|
{
|
|
Thread.Sleep(Randomx.GetId(300, 500));
|
|
goto retry2;
|
|
}
|
|
Thread.Sleep(Randomx.GetId(500, 800));
|
|
}
|
|
if (IsOpenDaRenPage)
|
|
{
|
|
Thread.Sleep(Randomx.GetId(500, 800));
|
|
jsCode = "function jsFunc3() {" +
|
|
" var btns = document.getElementsByClassName('auxo-btn auxo-btn-primary');" +
|
|
" for (i = 0; i < btns.length; i++) " +
|
|
" {" +
|
|
" if (btns[i].innerHTML.indexOf('发送邀约') > 0)" +
|
|
" {" +
|
|
" btns[i].click(); return 'ok';" +
|
|
" }" +
|
|
" }" +
|
|
"} " +
|
|
"jsFunc3();";
|
|
var t3 = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
|
|
t3.Wait(2000);
|
|
|
|
Invoke(new Action(() =>
|
|
{
|
|
this.txtSuccessCount.Text = (Convert.ToInt32(this.txtSuccessCount.Text) + 1).ToString();
|
|
}));
|
|
IsOpenDaRenPage = false;
|
|
}
|
|
}
|
|
// 在线沟通
|
|
else
|
|
{
|
|
// 点击沟通按钮
|
|
if (IsOpenDaRenPage)
|
|
{
|
|
chatRetry:
|
|
while (cefWebBrowserDetail.IsLoading)
|
|
Thread.Sleep(Randomx.GetId(500, 1000));
|
|
jsCode = "function jsFunc1() { " +
|
|
" if (document.body.innerHTML.indexOf('>待回复</span>') > 0 || document.body.innerHTML.indexOf('>已同意</span>') > 0) {" +
|
|
" return 'had';" +
|
|
" }" +
|
|
" var btns = document.getElementsByClassName('contact-btn-text text4');" +
|
|
" for (i = 0; i < btns.length; i++) {" +
|
|
" if (btns[i].innerHTML.indexOf('在线沟通') >= 0) {" +
|
|
" btns[i].click(); return 'ok';" +
|
|
" }" +
|
|
" }" +
|
|
" return document.body.innerHTML.indexOf('加载失败,请稍后重试') >= 0 ? 'error' : 'noBtn'; " +
|
|
"}" +
|
|
"jsFunc1();";
|
|
var t1 = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
|
|
t1.Wait(2000);
|
|
if (t1.Result?.Result?.ToString() == "had")
|
|
{
|
|
IsOpenDaRenPage = false;
|
|
return;
|
|
}
|
|
else if (t1.Result?.Result?.ToString() != "ok")
|
|
{
|
|
Thread.Sleep(Randomx.GetId(800, 1500));
|
|
if (t1.Result?.Result?.ToString() == "error")
|
|
{
|
|
cefWebBrowserDetail.Reload();
|
|
}
|
|
goto chatRetry;
|
|
}
|
|
Thread.Sleep(Randomx.GetId(500, 800));
|
|
}
|
|
|
|
// 点击沟通对话框
|
|
if (IsOpenDaRenPage)
|
|
{
|
|
chatRetry:
|
|
while (cefWebBrowserDetail.IsLoading)
|
|
Thread.Sleep(Randomx.GetId(500, 1000));
|
|
Thread.Sleep(2500);
|
|
jsCode = "function jsFuncChat() {" +
|
|
" if (document.getElementsByClassName('im-textarea text-area')[0]) {" +
|
|
" var txt1 = document.getElementsByClassName('im-textarea text-area')[0];" +
|
|
" txt1.focus(); txt1.click(); txt1.innerHTML = '" + drSetting.ChatWords + " ';" +
|
|
" return 'ok';" +
|
|
" }" +
|
|
" return 'noBtn'" +
|
|
"}" +
|
|
"jsFuncChat();";
|
|
var t1 = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
|
|
t1.Wait(2000);
|
|
if (t1.Result?.Result?.ToString() != "ok")
|
|
{
|
|
Thread.Sleep(Randomx.GetId(300, 500));
|
|
if (t1.Result?.Result?.ToString() == null || t1.Result?.Result?.ToString() == "error")
|
|
{
|
|
//cefWebBrowserDetail.Reload();
|
|
}
|
|
goto chatRetry;
|
|
}
|
|
Thread.Sleep(Randomx.GetId(500, 800));
|
|
|
|
chatSendRetry:
|
|
|
|
var host = cefWebBrowserDetail.GetBrowser().GetHost();
|
|
host.SendKeyEvent(new CefSharp.KeyEvent() { WindowsKeyCode = 8, Type = KeyEventType.RawKeyDown, Modifiers = CefEventFlags.None });
|
|
Thread.Sleep(250 + new Random(DateTime.Now.Millisecond).Next(250));
|
|
|
|
while (cefWebBrowserDetail.IsLoading)
|
|
Thread.Sleep(Randomx.GetId(500, 1000));
|
|
while (true)
|
|
{
|
|
break;
|
|
}
|
|
Thread.Sleep(2500);
|
|
jsCode = "function jsFuncChatSend() { " +
|
|
" document.getElementsByClassName('send-button')[0].click();" +
|
|
" return 'ok';" +
|
|
"}" +
|
|
"jsFuncChatSend();";
|
|
var t2 = cefWebBrowserDetail.GetBrowser().MainFrame.EvaluateScriptAsync(jsCode);
|
|
t2.Wait(2000);
|
|
if (t2.Result?.Result?.ToString() != "ok")
|
|
{
|
|
Thread.Sleep(Randomx.GetId(300, 500));
|
|
if (t2.Result?.Result?.ToString() == null || t2.Result?.Result?.ToString() == "error")
|
|
{
|
|
//cefWebBrowserDetail.Reload();
|
|
}
|
|
goto chatSendRetry;
|
|
}
|
|
|
|
Invoke(new Action(() =>
|
|
{
|
|
this.txtSuccessCount.Text = (Convert.ToInt32(this.txtSuccessCount.Text) + 1).ToString();
|
|
}));
|
|
IsOpenDaRenPage = false;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
private void CefWebBrowser_AddressChanged(object sender, CefSharp.AddressChangedEventArgs e)
|
|
{
|
|
Invoke(new Action(() => { this.textBox3.Text = e.Address; }));
|
|
if (e.Address.Contains("https://buyin.jinritemai.com/dashboard")) //https://fxg.jinritemai.com/ffa/mshop/homepage/index
|
|
{
|
|
Task.Run(() =>
|
|
{
|
|
//AllBase.Helper.GlobalConfig.DouUserCookies = CEFBrowser.GetCookie("", cefWebBrowser.RequestContext.GetCookieManager(null));
|
|
GlobalConfig.DouUserCookies = CEFBrowser.GetCookie("jinritemai.com", Cef.GetGlobalCookieManager());
|
|
StartUp.SaveDouUserCookies();
|
|
});
|
|
}
|
|
}
|
|
|
|
private void CefWebBrowser_FrameLoadEnd(object sender, CefSharp.FrameLoadEndEventArgs e)
|
|
{
|
|
}
|
|
|
|
//int totalPage = 10;
|
|
int currentPage = 1;
|
|
//int pageTimeInterval = 10; // 翻页间隔秒数
|
|
private void btnSend_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
this.txtSuccessCount.Text = "0";
|
|
Task.Run(() => { GetDaRen(); });
|
|
}
|
|
catch
|
|
{
|
|
BaseMsgForm.ShowError("请注意参数格式。");
|
|
}
|
|
}
|
|
|
|
void GetDaRen()
|
|
{
|
|
while (currentPage <= drSetting.TotalPage)
|
|
{
|
|
var html = GetCefHtml(cefWebBrowser);
|
|
var items = BaseRegex.GetMatchRegex(ref html, "data-item-uid=\"([\\s\\S]+?)\"");
|
|
List<string> daRenIdList = new List<string>();
|
|
foreach (Match m in items)
|
|
{
|
|
daRenIdList.Add(m.Groups[1].ToString());
|
|
}
|
|
|
|
var jsCode = "";
|
|
for (int i = 0; i < daRenIdList.Count; i++)
|
|
{
|
|
Invoke(new Action(() => { btnMainForm_Click(null, null); }));
|
|
jsCode = "document.getElementsByClassName('daren-card')[" + i + "].click();";
|
|
cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsCode, null);
|
|
//i += 20; // 测试翻页
|
|
|
|
IsOpenDaRenPage = true;
|
|
while (IsOpenDaRenPage)
|
|
{
|
|
Thread.Sleep(50);
|
|
}
|
|
//while (cefWebBrowserDetail == null || !daRenIdList.Any(d => cefWebBrowserDetail.Address.Contains(d)))
|
|
//{
|
|
// Thread.Sleep(50);
|
|
//}
|
|
//while (cefWebBrowserDetail.IsLoading)
|
|
//{
|
|
// Thread.Sleep(50);
|
|
//}
|
|
|
|
Thread.Sleep(drSetting.Interval * Randomx.GetId(1000, 1200));
|
|
}
|
|
|
|
Invoke(new Action(() => { btnMainForm_Click(null, null); }));
|
|
Thread.Sleep(Randomx.GetId(1000, 1200));
|
|
jsCode = "document.getElementsByClassName('anticon anticon-right')[0].click();";
|
|
cefWebBrowser.GetMainFrame().EvaluateScriptAsync(jsCode, null);
|
|
Thread.Sleep(drSetting.PageInterval * Randomx.GetId(1000, 1200));
|
|
currentPage++;
|
|
Invoke(new Action(() => { txtCurrentPage.Text = "" + currentPage; }));
|
|
}
|
|
}
|
|
|
|
string GetCefHtml(ChromiumWebBrowser browser)
|
|
{
|
|
if (browser.IsBrowserInitialized)
|
|
{
|
|
var task = browser.GetBrowser().MainFrame.GetSourceAsync();
|
|
task.Wait();
|
|
Thread.Sleep(50);
|
|
return task.Result;
|
|
}
|
|
return "";
|
|
}
|
|
|
|
private void btnMainForm_Click(object sender, EventArgs e)
|
|
{
|
|
if (cefWebBrowser != null)
|
|
cefWebBrowser.BringToFront();
|
|
|
|
pnlDetailForm.Style.BackColor1.Color = pnlDetailForm.Style.BackColor2.Color = Color.FromArgb(175, 210, 255);
|
|
pnlMainForm.Style.BackColor1.Color = pnlMainForm.Style.BackColor2.Color = Color.White;
|
|
pnlDetailForm.Location = new Point(pnlDetailForm.Location.X, 44);
|
|
pnlMainForm.Location = new Point(pnlMainForm.Location.X, 42);
|
|
}
|
|
|
|
private void btnDetailForm_Click(object sender, EventArgs e)
|
|
{
|
|
if (cefWebBrowserDetail != null)
|
|
cefWebBrowserDetail.BringToFront();
|
|
|
|
pnlDetailForm.Style.BackColor1.Color = pnlDetailForm.Style.BackColor2.Color = Color.White;
|
|
pnlMainForm.Style.BackColor1.Color = pnlMainForm.Style.BackColor2.Color = Color.FromArgb(175, 210, 255);
|
|
pnlDetailForm.Location = new Point(pnlDetailForm.Location.X, 42);
|
|
pnlMainForm.Location = new Point(pnlMainForm.Location.X, 44);
|
|
}
|
|
|
|
private void btnLoginDouyin_Click(object sender, EventArgs e)
|
|
{
|
|
string cookie = "";
|
|
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ShopAccount == cmbShop.SelectedItem.ToString());
|
|
if (shop != null)
|
|
cookie = shop.Cookies;
|
|
InitCef(cookie);
|
|
}
|
|
|
|
private void rbInvite_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (rbInvite.Checked)
|
|
{
|
|
drSetting.InviteType = InviteTypeEnum.Invite;
|
|
SaveDRSetting();
|
|
}
|
|
}
|
|
|
|
private void rbChat_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (rbChat.Checked)
|
|
{
|
|
drSetting.InviteType = InviteTypeEnum.Chat;
|
|
SaveDRSetting();
|
|
}
|
|
}
|
|
|
|
private void txtChatWords_TextChanged(object sender, EventArgs e)
|
|
{
|
|
drSetting.ChatWords = txtChatWords.Text;
|
|
SaveDRSetting();
|
|
}
|
|
|
|
private void txtInterval_TextChanged(object sender, EventArgs e)
|
|
{
|
|
if (txtInterval.Text.ParseToInt() < 10)
|
|
txtInterval.Text = "10";
|
|
drSetting.Interval = drSetting.PageInterval = txtInterval.Text.ParseToInt();
|
|
SaveDRSetting();
|
|
}
|
|
|
|
private void txtTotalPage_TextChanged(object sender, EventArgs e)
|
|
{
|
|
drSetting.TotalPage = txtInterval.Text.ParseToInt();
|
|
SaveDRSetting();
|
|
}
|
|
|
|
private void SaveDRSetting()
|
|
{
|
|
NaiBa.Util.Helper.ConfigHelper.SaveConfig("daren_settings", drSetting);
|
|
}
|
|
|
|
private void textBox3_KeyDown(object sender, KeyEventArgs e)
|
|
{
|
|
if (e.KeyCode == Keys.Enter)
|
|
{
|
|
cefWebBrowser.Load(textBox3.Text);
|
|
}
|
|
}
|
|
|
|
public string clickJsElementStr = "function getElement(txt, elem) {\r\n" +
|
|
" var child = document.body.firstElementChild;\r\n" +
|
|
" if (elem) child = elem\r\n" +
|
|
" var element1 = null;\r\n" +
|
|
" while (child) {\r\n" +
|
|
" if (child.innerHTML.indexOf(txt) >= 0) {\r\n" +
|
|
" element1 = child;\r\n" +
|
|
" if (child.firstElementChild) {\r\n" +
|
|
" child = child.firstElementChild; continue;\r\n" +
|
|
" } else break;\r\n" +
|
|
" }\r\n" +
|
|
" child = child.nextElementSibling;\r\n" +
|
|
" }\r\n" +
|
|
" if (element1) {\r\n" +
|
|
" return element1;\r\n" +
|
|
" } else return error;\r\n" +
|
|
"}\r\n";
|
|
}
|
|
}
|