Browse Source

添加ajaxhook

master
С·æ 4 years ago
parent
commit
91a420730e
  1. 146
      客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml.cs
  2. 2
      客户端/齐越慧眼/齐越慧眼/UserControls/CatControl.xaml.cs
  3. 2
      客户端/齐越慧眼/齐越慧眼/UserControls/ItemControl.xaml.cs
  4. 43
      客户端/齐越慧眼/齐越慧眼/cefhelper/CefRequestHandler.cs
  5. 1
      客户端/齐越慧眼/齐越慧眼/cefhelper/ExtChromiumBrowser.cs
  6. 2
      客户端/齐越慧眼/齐越慧眼/齐越慧眼.csproj

146
客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml.cs

@ -18,33 +18,49 @@ namespace 齐越慧眼.UserControls
{ {
public static BrowerControl Main = null; public static BrowerControl Main = null;
public ExtChromiumBrowser web; static MyRequestHandler myRequest;
public ChromiumWebBrowser web;
public BrowerControl() public BrowerControl()
{ {
InitializeComponent(); InitializeComponent();
myRequest = new MyRequestHandler() { brower=this};
web = new ExtChromiumBrowser("https://www.taobao.com") web = new ChromiumWebBrowser("https://www.taobao.com")
{ {
BrowserSettings = BrowserSettings =
{ {
DefaultEncoding = "UTF-8", DefaultEncoding = "UTF-8",
Plugins= CefState.Enabled, Plugins = CefState.Enabled,
//关于跨域限制 //关于跨域限制
WebSecurity = CefState.Disabled, //WebSecurity = CefState.Disabled,
ApplicationCache=CefState.Enabled, ApplicationCache = CefState.Enabled,
LocalStorage= CefState.Enabled LocalStorage = CefState.Enabled
} },
// RequestHandler = myRequest
}; };
grid.Children.Add(web); grid.Children.Add(web);
Loaded += BrowerControl_Loaded; Loaded += BrowerControl_Loaded;
web.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true; web.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true;
web.JavascriptObjectRepository.Register("hyCoreModel", new CefAsyncJS(), BindingOptions.DefaultBinder); web.JavascriptObjectRepository.Register("hyCoreModel", new CefAsyncJS(), BindingOptions.DefaultBinder);
Main = this; Main = this;
web.StartNewWindow += Web_StartNewWindow; // web.StartNewWindow += Web_StartNewWindow;
}
public void OnUrlEnd(string url)
{
if (url.Contains("search.jd.com/s_new.php"))
{
Task.Factory.StartNew(() =>
{
lastUrl = url;
DoWork();
});
}
} }
private void Web_StartNewWindow(object sender, NewWindowEventArgs e) private void Web_StartNewWindow(object sender, NewWindowEventArgs e)
@ -102,53 +118,69 @@ namespace 齐越慧眼.UserControls
{ {
lock (doWorkObj) lock (doWorkObj)
{ {
AddJquery(); if (string.IsNullOrEmpty(lastUrl))
return;
while (true) if (!lastUrl.Contains("jd.com"))
{ {
Task<JavascriptResponse> task = null; AddJquery();
}
Application.Current.Dispatcher.Invoke(() =>
{
task = web.EvaluateScriptAsPromiseAsync("return $(document.body).html();");
});
var result = task.Result; AddAjaxHook();
//判断是否加载完成 DoWork();
if (result.Success)
{
AddCss();
if (lastUrl.Contains("s.taobao.com"))
{
AddTaoBaoOptionDiv();
CheckTaoBaoPageItem();
}
if (lastUrl.Contains("search.jd.com"))
{
AddJDOptionDiv();
CheckJDPageItem();
}
if (lastUrl.Contains("s.1688.com"))
{
Add1688OptionDiv();
Check1688PageItem();
web.ShowDevTools();
}
lastUrl = string.Empty;
break;
}
}
} }
}); });
t.Start(); t.Start();
} }
private void DoWork()
{
while (true)
{
Task<JavascriptResponse> task = null;
Application.Current.Dispatcher.Invoke(() =>
{
task = web.EvaluateScriptAsPromiseAsync("return $(document.body).html();");
});
var result = task.Result;
//判断是否加载完成
if (result.Success)
{
AddCss();
if (lastUrl.Contains("s.taobao.com"))
{
AddTaoBaoOptionDiv();
CheckTaoBaoPageItem();
}
if (lastUrl.Contains("search.jd.com"))
{
AddJDOptionDiv();
CheckJDPageItem();
}
//if (lastUrl.Contains("s.1688.com"))
//{
// Add1688OptionDiv();
// Check1688PageItem();
// web.ShowDevTools();
//}
lastUrl = string.Empty;
break;
}
Thread.Sleep(100);
}
}
/// <summary> /// <summary>
/// 添加jq操作类 /// 添加jq操作类
/// </summary> /// </summary>
@ -251,6 +283,14 @@ namespace 齐越慧眼.UserControls
} }
#endregion #endregion
/// <summary>
/// 添加ajax请求拦截
/// </summary>
/// <returns></returns>
private bool AddAjaxHook()
{
return DoJavaScript(@"$(document).ajaxSuccess(function( event, xhr, settings ) {onAjaxHook(settings.url);});").isOk;
}
//object_id@653756566953^ //object_id@653756566953^
#region 京东代码 #region 京东代码
@ -668,6 +708,12 @@ namespace 齐越慧眼.UserControls
{ {
return ""; return "";
} }
public void onAjaxHook(string url)
{
MainWindow.Main.brower.OnUrlEnd(url);
}
public bool settaobaoItemData(dynamic data) public bool settaobaoItemData(dynamic data)
{ {
if (!MainWindow.Main.IsUpdateKey) if (!MainWindow.Main.IsUpdateKey)

2
客户端/齐越慧眼/齐越慧眼/UserControls/CatControl.xaml.cs

@ -32,7 +32,7 @@ namespace 齐越慧眼.UserControls
DefaultEncoding = "UTF-8", DefaultEncoding = "UTF-8",
Plugins= CefState.Enabled, Plugins= CefState.Enabled,
//关于跨域限制 //关于跨域限制
WebSecurity = CefState.Disabled, //WebSecurity = CefState.Disabled,
}, },
}; };

2
客户端/齐越慧眼/齐越慧眼/UserControls/ItemControl.xaml.cs

@ -31,7 +31,7 @@ namespace 齐越慧眼.UserControls
DefaultEncoding = "UTF-8", DefaultEncoding = "UTF-8",
Plugins= CefState.Enabled, Plugins= CefState.Enabled,
//关于跨域限制 //关于跨域限制
WebSecurity = CefState.Disabled //WebSecurity = CefState.Disabled
}, },
}; };

43
客户端/齐越慧眼/齐越慧眼/cefhelper/CefRequestHandler.cs

@ -0,0 +1,43 @@
using CefSharp;
using CefSharp.Handler;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Windows;
using .UserControls;
namespace .cefhelper
{
public class MyRequestHandler : RequestHandler
{
public BrowerControl brower { get; set; }
protected override bool OnBeforeBrowse(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool userGesture,
bool isRedirect)
{
// 先调用基类的实现,断点调试
return base.OnBeforeBrowse(chromiumWebBrowser, browser, frame, request, userGesture, isRedirect);
}
protected override IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame,
IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling)
{
if (!string.IsNullOrEmpty(request.Url))
{
if (request.Url.Contains("jd.com")) {
brower.OnUrlEnd(request.Url);
}
}
// 先调用基类的实现,断点调试
return base.GetResourceRequestHandler(
chromiumWebBrowser, browser, frame, request, isNavigation,
isDownload, requestInitiator, ref disableDefaultHandling);
}
}
}

1
客户端/齐越慧眼/齐越慧眼/cefhelper/ExtChromiumBrowser.cs

@ -12,6 +12,7 @@ namespace 齐越慧眼.cefhelper
: base(null) : base(null)
{ {
this.LifeSpanHandler = new CefLifeSpanHandler(); this.LifeSpanHandler = new CefLifeSpanHandler();
//this.DownloadHandler = new DownloadHandler(this); //this.DownloadHandler = new DownloadHandler(this);
} }

2
客户端/齐越慧眼/齐越慧眼/齐越慧眼.csproj

@ -61,7 +61,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="CefSharp.Wpf.NETCore" Version="89.0.170" /> <PackageReference Include="CefSharp.Wpf.NETCore" Version="94.4.110" />
<PackageReference Include="HandyControl" Version="3.2.0" /> <PackageReference Include="HandyControl" Version="3.2.0" />
<PackageReference Include="MvvmLightLibsStd10" Version="5.4.1.1" /> <PackageReference Include="MvvmLightLibsStd10" Version="5.4.1.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />

Loading…
Cancel
Save