Browse Source

添加ajaxhook

master
С·æ 4 years ago
parent
commit
91a420730e
  1. 86
      客户端/齐越慧眼/齐越慧眼/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

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

@ -18,33 +18,49 @@ namespace 齐越慧眼.UserControls
{
public static BrowerControl Main = null;
public ExtChromiumBrowser web;
static MyRequestHandler myRequest;
public ChromiumWebBrowser web;
public BrowerControl()
{
InitializeComponent();
web = new ExtChromiumBrowser("https://www.taobao.com")
myRequest = new MyRequestHandler() { brower=this};
web = new ChromiumWebBrowser("https://www.taobao.com")
{
BrowserSettings =
{
DefaultEncoding = "UTF-8",
Plugins= CefState.Enabled,
Plugins = CefState.Enabled,
//关于跨域限制
WebSecurity = CefState.Disabled,
ApplicationCache=CefState.Enabled,
LocalStorage= CefState.Enabled
//WebSecurity = CefState.Disabled,
ApplicationCache = CefState.Enabled,
LocalStorage = CefState.Enabled
}
},
// RequestHandler = myRequest
};
grid.Children.Add(web);
Loaded += BrowerControl_Loaded;
web.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true;
web.JavascriptObjectRepository.Register("hyCoreModel", new CefAsyncJS(), BindingOptions.DefaultBinder);
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)
@ -101,9 +117,27 @@ namespace 齐越慧眼.UserControls
Thread t = new Thread(() =>
{
lock (doWorkObj)
{
if (string.IsNullOrEmpty(lastUrl))
return;
if (!lastUrl.Contains("jd.com"))
{
AddJquery();
}
AddAjaxHook();
DoWork();
}
});
t.Start();
}
private void DoWork()
{
while (true)
{
Task<JavascriptResponse> task = null;
@ -132,21 +166,19 @@ namespace 齐越慧眼.UserControls
CheckJDPageItem();
}
if (lastUrl.Contains("s.1688.com"))
{
Add1688OptionDiv();
Check1688PageItem();
web.ShowDevTools();
}
//if (lastUrl.Contains("s.1688.com"))
//{
// Add1688OptionDiv();
// Check1688PageItem();
// web.ShowDevTools();
//}
lastUrl = string.Empty;
break;
}
}
}
});
t.Start();
Thread.Sleep(100);
}
}
/// <summary>
@ -251,6 +283,14 @@ namespace 齐越慧眼.UserControls
}
#endregion
/// <summary>
/// 添加ajax请求拦截
/// </summary>
/// <returns></returns>
private bool AddAjaxHook()
{
return DoJavaScript(@"$(document).ajaxSuccess(function( event, xhr, settings ) {onAjaxHook(settings.url);});").isOk;
}
//object_id@653756566953^
#region 京东代码
@ -668,6 +708,12 @@ namespace 齐越慧眼.UserControls
{
return "";
}
public void onAjaxHook(string url)
{
MainWindow.Main.brower.OnUrlEnd(url);
}
public bool settaobaoItemData(dynamic data)
{
if (!MainWindow.Main.IsUpdateKey)

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

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

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

@ -31,7 +31,7 @@ namespace 齐越慧眼.UserControls
DefaultEncoding = "UTF-8",
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)
{
this.LifeSpanHandler = new CefLifeSpanHandler();
//this.DownloadHandler = new DownloadHandler(this);
}

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

@ -61,7 +61,7 @@
</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="MvvmLightLibsStd10" Version="5.4.1.1" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />

Loading…
Cancel
Save