预览模式: 普通 | 列表

Php判断蜘蛛和移动端的代码

PHP代码
  1. function isgood()  
  2. {  
  3.     $a = strtolower($_SERVER['HTTP_USER_AGENT']);  
  4.     if (!emptyempty($a)) {  
  5.         $b = array('Googlebot''Yahoo''Bing');  
  6.         foreach ($b as $c) {  
  7.             $d = strtolower($c);  
  8.             if (strpos($a$d) !== false) {  
  9.                 return $d;  
  10.             }  
  11.         }  
  12.     } else {  
  13.         return false;  
  14.     }  
  15. }  
  16. function isMobile()  
  17. {  
  18.     if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) {  
  19.         return "1";  
  20.     }  
  21.     if (isset($_SERVER['HTTP_VIA'])) {  
  22.         return stristr($_SERVER['HTTP_VIA'], "wap") ? "1" : "0";  
  23.     }  
  24.     if (isset($_SERVER['HTTP_USER_AGENT'])) {  
  25.         $e = array('nokia''sony''ericsson''mot''samsung''htc''sgh''lg''sharp''sie-''philips''panasonic''alcatel''lenovo''iphone''ipod''blackberry''meizu''android''netfront''symbian''ucweb''windowsce''palm''operamini''operamobi''openwave''nexusone''cldc''midp''wap''mobile');  
  26.         if (preg_match("/(" . implode('|'$e) . ")/i"strtolower($_SERVER['HTTP_USER_AGENT']))) {  
  27.             return "1";  
  28.         }  
  29.     }  
  30.     if (isset($_SERVER['HTTP_ACCEPT'])) {  
  31.         if (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html'))) {  
  32.             return "1";  
  33.         }  
  34.     }  
  35.     return "0";  
  36. }  

以上代码来源于本人破解的php木马。

Tags: php

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 314

这周没什么时间,一开始就在忙一些CefSharp的事情,Win10的研究就放了下来,CefSharp的资料挺少的,但好在是开源的,可以我们便宜的折腾。因为两个的内容都不多,我就合成一篇文章啦。

这还里还要吐嘈一下WinForm,也可能是WPF玩的年头长了,觉得WinForm真TNND的难用呀,弄几个定义的控件,相当之麻烦。

回归正文。

 

查看更多...

Tags: c#

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 259

CefSharp 自定义右键菜单 (Winform版)

右键菜单功能由IContextMenuHandler接口定义.
 
具体代码如下:
 
C#代码
  1. /* 引用 
  2. using CefSharp; 
  3. using CefSharp.WinForms; 
  4. using System; 
  5. using System.Collections.Generic; 
  6. */  
  7.    
  8.    
  9. public class MenuHandler : IContextMenuHandler  
  10.     {  
  11.         void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)  
  12.         {  
  13.             //主要修改代码在此处;如果需要完完全全重新添加菜单项,首先执行model.Clear()清空菜单列表即可.  
  14.             //需要自定义菜单项的,可以在这里添加按钮;  
  15.             if (model.Count > 0)  
  16.             {  
  17.                 model.AddSeparator();//添加分隔符;  
  18.             }  
  19.             model.AddItem((CefMenuCommand)26501, "Show DevTools");  
  20.             model.AddItem((CefMenuCommand)26502, "Close DevTools");  
  21.         }  
  22.    
  23.         bool IContextMenuHandler.OnContextMenuCommand(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)  
  24.         {  
  25.             //命令的执行,点击菜单做什么事写在这里.  
  26.             if (commandId == (CefMenuCommand)26501)  
  27.             {  
  28.                 browser.GetHost().ShowDevTools();  
  29.                 return true;  
  30.             }  
  31.             if (commandId == (CefMenuCommand)26502)  
  32.             {  
  33.                 browser.GetHost().CloseDevTools();  
  34.                 return true;  
  35.             }  
  36.             return false;  
  37.         }  
  38.    
  39.         void IContextMenuHandler.OnContextMenuDismissed(IWebBrowser browserControl, IBrowser browser, IFrame frame)  
  40.         {  
  41.             var webBrowser = (ChromiumWebBrowser)browserControl;  
  42.             Action setContextAction = delegate ()  
  43.             {  
  44.                 webBrowser.ContextMenu = null;  
  45.             };  
  46.             webBrowser.Invoke(setContextAction);  
  47.         }  
  48.    
  49.         bool IContextMenuHandler.RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback)  
  50.         {  
  51.             //return false 才可以弹出;  
  52.             return false;  
  53.         }  
  54.    
  55.         //下面这个官网Example的Fun,读取已有菜单项列表时候,实现的IEnumerable,如果不需要,完全可以注释掉;不属于IContextMenuHandler接口规定的  
  56.         private static IEnumerable<Tuple<string, CefMenuCommand, bool>> GetMenuItems(IMenuModel model)  
  57.         {  
  58.             for (var i = 0; i < model.Count; i++)  
  59.             {  
  60.                 var header = model.GetLabelAt(i);  
  61.                 var commandId = model.GetCommandIdAt(i);  
  62.                 var isEnabled = model.IsEnabledAt(i);  
  63.                 yield return new Tuple<string, CefMenuCommand, bool>(header, commandId, isEnabled);  
  64.             }  
  65.         }  
  66.     }  
调用很简单,如下:
C#代码
  1. //在初始化ChromiumWebBrowser后,指定其MenuHandler 即可.  
  2. browser1.MenuHandler = new MenuHandler();  
这样就实现了自定义菜单项,及设定自定义菜单项的功能.

关于代码,再啰嗦几点:

1.CefSharp右键菜单功能由IContextMenuHandler接口定义.

2.有的人看了官方的例子,可能会卡在webBrowser.Dispatcher.Invoke上面. winfrom中是没有Dispatcher的,Dispatcher只是调度器,在winform中直接使用Invoke调用即可,跟平时写的跨线程的UI访问需要使用委托来访问以确保线程安全一样.

3.官方的Example也是显示实现接口,文章代码尽量与翻译官方Example所以写的显示实现接口,实际上隐式实现接口是一样可用的.

查看更多...

Tags: c#

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 173

 广告位

↑返回顶部↑