宝塔面板谷歌身份认证绑定图文教程

我们经常在使用宝塔面板的时候为了安全开启各种认证,比如这个谷歌身份认证绑定。不过因为比较特殊,我们实际使用经常会出现问题,那怎么关闭呢?下面小白就图文介绍下宝塔面板的Google身份认证绑定。

设置教程
找到面板设置 – 谷歌身份认证 滑块到绿色即可打开,会有如下提示:

  • 必须要用到且了解此功能才决定自己是否要开启!
  • 如果无法验证,命令行输入”bt 24″ 取消谷歌登录认证
  • 请先下载APP,并完成安装和初始化
  • 开启服务后,请立即绑定,以免出现面板不能访问。
  • 开启后导致面板不能访问,可以点击下面链接了解解决方法。
宝塔面板google身份认证绑定

下载google身份认证器APP,或者跟小白一样下载”Authy”这款软件,优点是可以在线保存。可以多设备公用,还可以避免手机更换/重装导致密码丢失。强烈推荐!

宝塔谷歌身份认证

开启之前一定要确认自己能链接谷歌服务,一旦开启就得输入密码才能进入面板。如果不小心开启了,又没有设置谷歌身份认证密码,那么看下面关闭教程。

关闭教程

1、能正常使用谷歌身份验证器,进入面板 – google身份认证,关闭即可。

2、无法使用谷歌身份验证器,SSH进入,输入“bt”,选择24 关闭谷歌认证。

宝塔面板bt命令

宝塔面板安装memcached的误区及正确方法

宝塔面板添加memcached可以有效加速服务器访问速度,提高网站的用户体验。不过在实际使用中,魏艾斯博客发现很多新手有一个误区,就是添加了错误的memcached组件,导致起不到正常加速服务器的效果。本文中魏艾斯博客分享一下误区在哪里以及应该怎么安装是正确的加速组件。

1、错误的memcached组件添加方法

很多人直接安装下图中蓝色M字样的memcached组件。从这里安装后,服务器不会有加速效果,访问网站也不会感觉到比以前快。

2、正确的memcached安装方法

以老魏目前使用的php版本为例,正确安装方法是在“软件管理”的php7.0>设置中,找到“安装扩展”右侧的memcached,安装。这才是正确的memcached组件。安装完成后,再返回看到上图蓝色M字样的memcached已经自动安装上去了,无需人工干预。

也就是说这里有一个顺序问题,老魏测试了一下,如果你先安装上图蓝色M字样的Memcached,那么下图php7.0的memcached不会被安装,同样也起不到加速效果,失败;若先去php7.0中安装memcached,再返回会看到蓝色M字样的Memcached已经被自动安装好了,这时候服务器会加速,网站打开也会成倍提速,这才是正确的安装步骤和效果。请大家一定注意这个顺序不能乱搞,搞错了你会埋怨老魏分享错误、无效的资料,浪费你的时间、精力,却还没效果,其实是你把这个顺序搞颠倒了。

安装memcached组件后,还要安装一个插件,叫 memcached is your friend 这个插件。具体安装过程请移步安装 memcached 和 object-cache.php 中的第二步提到的这个插件,按照要求安装就可以了。宝塔面板如果不安装的话,memcached就不会正常工作了,命中率一直是0。

3、用宝塔面板加速

通过宝塔面板优化服务器速度、性能的参考资料如何设置宝塔面板优化 php 服务器性能,写的很详细了,这里不再啰嗦。

这个memcached是从服务器层面加速,比wordpress插件那种程序层面加速要快上很多,占用资源也小。因为wordpess缓存插件的原理是把数据库内容缓存到硬盘中,而memcached是缓存到内存中。内存的读取速度是几倍于硬盘读取速度的。不过你使用了memcached就必须卸载掉wordpress super cache之类的缓存插件,因为都是缓存插件会互相影响效果。

至于memcached的效果如何检测,有两种方法:一是使用宝塔面板自带的检测功能,不够直观;二是使用第三方php文件,很直观。操作起来很简单,请移步多种方法实时监测 Memcached命中率

http 慢拒绝服务攻击 nginx详细参数配置

Weblogic

============

1、在配置管理界面中的协议->一般信息下设置 完成消息超时时间小于400

2、在配置管理界面中的协议->HTTP下设置 POST 超时、持续时间、最大 POST 大小为安全值范围。

Nginx

============

1、通过调整$request_method,配置服务器接受http包的操作限制;

2、在保证业务不受影响的前提下,调整client_max_body_size, client_body_buffer_size, client_header_buffer_size,large_client_header_buffersclient_body_timeout, client_header_timeout的值,必要时可以适当的增加;

3、对于会话或者相同的ip地址,可以使用HttpLimitReqModule and HttpLimitZoneModule参数去限制请求量或者并发连接数;

4、根据CPU和负载的大小,来配置worker_processes 和 worker_connections的值,公式是:max_clients = worker_processes * worker_connections。

 

nginx 配置详情:

keepalive_timeout 

Nginx 使用 keepalive_timeout 来指定 KeepAlive 的超时时间(timeout)。指定每个 TCP 连接最多可以保持多长时间。Nginx 的默认值是 75 秒,有些浏览器最多只保持 60 秒,所以可以设定为 60 秒。若将它设置为 0,就禁止了 keepalive 连接。

client_body_timeout

指定客户端与服务端建立连接后发送 request body 的超时时间。如果客户端在指定时间内没有发送任何内容,Nginx 返回 HTTP 408(Request Timed Out)。

# 配置段: http, server, location

client_body_timeout 20s;

client_header_timeout

客户端向服务端发送一个完整的 request header 的超时时间。如果客户端在指定时间内没有发送一个完整的 request header,Nginx 返回 HTTP 408(Request Timed Out)。

# 配置段: http, server, location

client_header_timeout 10s;

send_timeout

服务端向客户端传输数据的超时时间。

# 配置段: http, server, location

send_timeout 30s;

client_body_buffer_size


此指令设置用于请求主体的缓冲区大小。 如果主体超过缓冲区大小,则完整主体或其一部分将写入临时文件。 如果NGINX配置为使用文件而不是内存缓冲区,则该指令会被忽略。 默认情况下,该指令为32位系统设置一个8k缓冲区,为64位系统设置一个16k缓冲区。 该指令在NGINX配置的http,server和location区块使用。如下:

  1. server{
  2.       client_body_buffer_size 8k;
  3. }

client_max_body_size


此指令设置NGINX能处理的最大请求主体大小。 如果请求大于指定的大小,则NGINX发回HTTP 413(Request Entity too large)错误。 如果服务器处理大文件上传,则该指令非常重要。

默认情况下,该指令值为1m。 如下:

  1. server{
  2.       client_max_body_size 2m;
  3. }

client_body_in_file_only


此指令禁用NGINX缓冲区并将请求体存储在临时文件中。 文件包含纯文本数据。 该指令在NGINX配置的http,server和location区块使用。 可选值有:
off:该值将禁用文件写入
clean:请求body将被写入文件。 该文件将在处理请求后删除。
on: 请求正文将被写入文件。 处理请求后,将不会删除该文件。
默认情况下,指令值为关闭。 如下:

  1. http{
  2.       client_body_in_file_only clean;
  3. }

client_body_in_single_buffer


该指令设置NGINX将完整的请求主体存储在单个缓冲区中。 默认情况下,指令值为off。 如果启用,它将优化读取$request_body变量时涉及的I/O操作。如下例子:

  1. server{
  2.       client_body_in_single_buffer on;
  3. }

client_body_temp_path


此指令指定存储请求正文的临时文件的位置。 除了位置之外,指令还可以指定文件是否需要最多三个级别的文件夹层次结构。 级别指定为用于生成文件夹的位数。
默认情况下,NGINX在NGINX安装路径下的client_body_temp文件夹创建临时文件。 如下例子:

  1. server{
  2.       client_body_temp_pathtemp_files 1 2;
  3.       }

该指令生成的文件路径如temp_files/1/05/0000003051。

client_header_buffer_size


此指令与client_body_buffer_size类似。 它为请求头分配一个缓冲区。 如果请求头大小大于指定的缓冲区,则使用large_client_header_buffers指令分配更大的缓冲区。如下例子:

  1. http{
  2.       client_header_buffer_size 1m;
  3.       }

large_client_header_buffers


此指令规定了用于读取大型客户端请求头的缓冲区的最大数量和大小。 这些缓冲区仅在缺省缓冲区不足时按需分配。 当处理请求或连接转换到保持活动状态时,释放缓冲区。如下例子:

  1. http{
  2.     large_client_header_buffers 4 8k;
  3.    }

网站关键词设置与挖掘技巧有哪些

1、TDK中的关键词(格式不是绝对的,要兼顾定位与转化)

①标题写法T

出现在搜索结果中,影响排名。26个字符。(核心词-品牌词、核心词需求-品牌、核心词需求+延申-品牌词)

②描述写法D

出现在搜索结果中,间接影响排名,60-78个字符。(包含标题中的词,使核心词出现两次以上。做什么、解决什么问题)

③关键字设置K

3-5个英文,符号“,”隔开。(标题、描述中词的组合)

2、网站内容中的关键词

①栏目

栏目名称-品牌词

②文字/内容

文章标题-品牌词,在内容中布局关键词,提升内容与关键词的关联程度。

③图片alt

图片的属性描述。一句话概括内容包含关键词或相关词,图片清晰度,大小,水印,文字都有影响。

④H标签

H1必须唯一,作为页面参考的主题,放在代表页面的主题处。

3、长尾关键词挖掘

①搜索引擎下拉框

在搜索引擎搜索框中输入关键词会出现相应的长尾关键词联想。可以通过空格、字符改变联想出的关键词。收集这些关键词,这些关键词的记录了搜索历史,而且实时预测能力好。

②相关搜索

百度搜索结果页最下端会给出相关的关键词。周期更长,可能涉及用户未满足的需求。

③百度指数

http://index.baidu.com通过其工具分析关键词图谱、相关词。

④百度推广助手

要注册账号www2.baidu.com及下载客户端editor.baidu.com。工具提供更好的筛选功能,更好的统计数据,可以导入导出。

⑤百度资源搜索平台

验证网站后,https://ziyuan.baidu.com/可以分析关键词的流量。有PC和移动端,30天左右数据导出。平台还提供百度的资源文档。

⑥百度统计

多维度分析关键词,可以筛选条件。可以得到关键词指标和历史趋势。

⑦5118平台/站长之家/爱站关键词/金花站长

各个搜索引擎选择;长尾关键词、相关词;PC端、移动端;挖掘同行网站。

WordPress英文标点符号自动替换中文符号(半角全角)解决方法

WordPress非常重视安全因素,为了防止外部源代码在网页上执行,复制粘贴文章内容的时候,自动将内容中源代码的英文半角符号变为全角符号。虽然这样很安全,但是用户复制代码使用时,需把全角符号改成半角符号,影响了网站的用户体验!

WordPress用户可以根据自己的需要选择是否转换英文半角符号变为全角符号。如果不想转换,网上搜索了一下,找到了如下的二种解决方案:

1、修改主题的functions.php文件
在当前使用的主题下的functions.php文件中加入下面的代码:

<?php remove_filter('the_content', 'wptexturize'); ?>

注意:这行代码加在第一行(即第一个<?php符号之前),或者最后一行(即最后一个?> 符号之后)。因本方法只修改了主题,故博客升级后,无需再次修改。

2、修改wp-includes目录下的formatting.php文件
在wp-includes/formatting.php文件中查找以下代码:

// static strings
$curl = str_replace($static_characters, $static_replacements, $curl);
// regular expressions
$curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);

在二个$curl前面加//符号把代码注释掉:

// static strings
// $curl = str_replace($static_characters, $static_replacements, $curl);
// regular expressions
// $curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);

注意:本方法修改了WordPress的系统文件,当WordPress升级后会把修改后的formatting.php文件替换为原版的,需要重新注释代码!因此推荐使用第一种方法修改。

使用DEDE织梦计划任务功能定时更新首页

dedecms织梦系统后台有个计划任务功能,相信很多人都不知道怎么用,里面也没有详细说明,这里就通过实际案例来讲解如何使用计划任务让网站每5分钟自动更新首页。

定时更新首页index.html文件,更新的好处就是可以让搜索引擎蜘蛛在爬取index.html的时候,不会返回状态码304 ,搜索引擎会判断你HTML文件的更新时间来与之前索引的时间做对比如果有更新就收录,没更新就置304状态不更新。

下面详细说明计划任务如何使用:

首先进入后台-系统-计划任务管理

进去后可以看到有一个计划任务执行的说明:

计划任务执行的说明

·为了确保任务能执行完全,建议使用Dede的客户端工具,否则只能通过JS触发,但JS触发有很多不确定因素会导致任务不能完成;
·JS触发方式:在所有文档页面中用JS调用/plus/task.php?client=js(必须禁用计划任务的密码,系统配置参数->其它选项);
·自行定制客户端:直接访问“http://网址/plus/task.php?clientpwd=管理密码”,会返回其中一个可执行任务的网址(没有可用任务则返回串:notask),然后客户端运行这个网址即可。

接下来我们新建一个计划任务,任务需要有一个PHP执行文件,用来生成网站首页,此文件大家可以在附件里面下载:

把附件解压开后的dede-post.php 文件上传到网站目录下的plus/task/里

为了可以让网站每隔5分钟更新一次我们还需要修改文件plus/task/task.php

打开task.php把这个$daylimit参数改成300秒——$daylimit = 300;如果需要改成其他时间也可以自己修改,然后上传。到这里基本任务执行的条件都有了,还差一个触发方式。这里我们选择使用JS文件触发方式,这种方式只要有访客访问到就能触发到。如果你网站经常没人访问那就只能手动去访问触发。

我们把代码:<script language=”javascript” src=” /plus/task.php?client=js”></script> 复制放到底部模板footer.htm 里面即可。

这样每当有人访问你的网站的时候就会触发这个JS,让你的执行程序运行一下,也就是网站自动更新了。

本文提到的附件下载地址如下:::

如何调用织梦自定义表单的提交总数量?

实践通过!验证成功100%!

{dede:loop table=’dede_diyform1′ sort=’id’ row=’1′ if=”}
已经有[field:id/]位报名
{/dede:loop}

自已做了一个自定义表单,用来提交用户的报名。报名的详细信息,我已经通过后台禁止前台观看。但是我想在网站页面上显示,已经有多少人报名。这就需要调用表单提交的数量,我看后台自定义表单中,每个提交的表单前边,都有一个ID号,怎么调用最新的ID号,也就是最高的ID号呢?
我的问题已经解决,是一个哈尔滨的网友帮解决的,因为他留了Q被屏蔽了,无法给他分数了。现在我把答案写下来,供以后需要的人参考。
{dede:loop table=’dede_diyform1′ sort=’id’ row=’1′ if=”}
已经有<a >[field:id/]</a>位报名
{/dede:loop}
其中,dede_diyform1,是你后台建立自定义表单时的“数据表”填写的名称。[field:id/]中id就是用户提交后,后台看到的每一层的id了。

织梦未审核的文章仍然生成的问题

织梦dedecms未审核的文章仍然生成的问题


有时候,我们采集了很多的文章,或者使用的别人的源码,系统中已经带了很多文章数据。全部发布出去这个是不可取的,比较好的办法是把这些文档数据设置为未审核,然后自己手工伪原创处理之后再审核发布。  

网上比较常见的办法是使用SQL语句设置,具体的SQL语句如下:  Update dede_archives set arcrank = -1,ismake=0;  使用这两条SQL语句之后,所有的文章文档的状态就变成了未审核了。

不过会遇到一个问题,有的是前台动态还可以访问,后台一键生成的时候居然还会生成,只是不会真正的生成文件。产生这种情况的原因是什么呢?其实是织梦DedeCMS的微表和主表的状态没有统一。网上有一种比较死的办法,是把文章删除之后再恢复文章就解决了。  

今天要说的还是使用SQL语句解决这个问题。都知道是微表的问题了,只需要使用如下的SQL语句即可解决:

Update dede_arctiny set arcrank = -1;  

综合一下,我们在把所有的文章设置为未审核状态的时候,一定要使用以下的SQL语句:  

Update dede_archives set arcrank = -1,ismake=0;  

Update dede_arctiny set arcrank = -1;  

这样就把文章的主表、微表等等的信息都同步了。

jd_scripts

Usage

+ 2021-03-21更新 增加bot交互,spnode指令,功能是否开启自动根据你的配置判断,详见 https://gitee.com/lxk0301/jd_docker/pulls/18
 **bot交互启动前置条件为 配置telegram通知,并且未使用自己代理的 TG_API_HOST** 
 **spnode使用前置条件未启动bot交互**   _(后续可能去掉该限制_ 
 使用bot交互+spnode后 后续用户的cookie维护更新只需要更新logs/cookies.conf即可
 使用bot交互+spnode后 后续执行脚本命令请使用spnode否者无法使用logs/cookies.conf的cookies执行脚本,定时任务也将自动替换为spnode命令执行
 发送/spnode给bot获取可执行脚本的列表,选择对应的按钮执行。(拓展使用:运行指定路径脚本,例:/spnode /scripts/jd_818.js)
 spnode功能概述示例
 spnode conc /scripts/jd_bean_change.js 为每个cookie单独执行jd_bean_change脚本(伪并发
 spnode 1 /scripts/jd_bean_change.js 为logs/cookies.conf文件里面第一行cookie账户单独执行jd_bean_change脚本
 spnode jd_XXXX /scripts/jd_bean_change.js 为logs/cookies.conf文件里面pt_pin=jd_XXXX的cookie账户单独执行jd_bean_change脚本
 spnode /scripts/jd_bean_change.js 为logs/cookies.conf所有cookies账户一起执行jd_bean_change脚本

**请仔细阅读并理解上面的内容,使用bot交互默认开启spnode指令功能功能。** 
+ 2021-03-9更新 新版docker单容器多账号自动互助
+开启方式:docker-compose.yml 中添加环境变量 - ENABLE_AUTO_HELP=true 
+助力原则:不考虑需要被助力次数与提供助力次数  假设有3个账号,则生成: ”助力码1@助力码2@助力码3&助力码1@助力码2@助力码3&助力码1@助力码2@助力码3“
+原理说明:1、定时调用 /scripts/docker/auto_help.sh collect 收集各个活动的助力码,整理、去重、排序、保存到 /scripts/logs/sharecodeCollection.log;
        2、(由于linux进程限制,父进程无法获取子进程环境变量)在每次脚本运行前,在当前进程先调用 /scripts/docker/auto_help.sh export 把助力码注入到环境变量

+ 2021-02-21更新 https://gitee.com/lxk0301/jd_scripts仓库被迫私有,老用户重新更新一下镜像:https://hub.docker.com/r/lxk0301/jd_scripts)(docker-compose.yml的REPO_URL记得修改)后续可同步更新jd_script仓库最新脚本
+ 2021-02-10更新 docker-compose里面,填写环境变量 SHARE_CODE_FILE=/scripts/logs/sharecode.log, 多账号可实现自己互助(只限sharecode.log日志里面几个活动),注:已停用,请使用2021-03-9更新
+ 2021-01-22更新 CUSTOM_LIST_FILE 参数支持远程定时任务列表 (⚠️务必确认列表中的任务在仓库里存在)
+ 例1:配置远程crontab_list.sh, 此处借用 shylocks 大佬的定时任务列表, 本仓库不包含列表中的任务代码, 仅作示范
+ CUSTOM_LIST_FILE=https://raw.githubusercontent.com/shylocks/Loon/main/docker/crontab_list.sh
+
+ 例2:配置docker挂载本地定时任务列表, 用法不变, 注意volumes挂载
+ volumes:
+   - ./my_crontab_list.sh:/scripts/docker/my_crontab_list.sh
+ environment:
+   - CUSTOM_LIST_FILE=my_crontab_list.sh


+ 2021-01-21更新 增加 DO_NOT_RUN_SCRIPTS 参数配置不执行的脚本
+ 例:DO_NOT_RUN_SCRIPTS=jd_family.js&jd_dreamFactory.js&jd_jxnc.js
建议填写完整文件名,不完整的文件名可能导致其他脚本被禁用。
例如:“jd_joy”会匹配到“jd_joy_feedPets”、“jd_joy_reward”、“jd_joy_steal”

+ 2021-01-03更新 增加 CUSTOM_SHELL_FILE 参数配置执行自定义shell脚本
+ 例1:配置远程shell脚本, 我自己写了一个shell脚本https://raw.githubusercontent.com/iouAkira/someDockerfile/master/jd_scripts/shell_script_mod.sh 内容很简单下载惊喜农场并添加定时任务
+ CUSTOM_SHELL_FILE=https://raw.githubusercontent.com/iouAkira/someDockerfile/master/jd_scripts/shell_script_mod.sh
+
+ 例2:配置docker挂载本地自定义shell脚本,/scripts/docker/shell_script_mod.sh 为你在docker-compose.yml里面挂载到容器里面绝对路径
+ CUSTOM_SHELL_FILE=/scripts/docker/shell_script_mod.sh
+
+ tip:如果使用远程自定义,请保证网络畅通或者选择合适的国内仓库,例如有部分人的容器里面就下载不到github的raw文件,那就可以把自己的自定义shell写在gitee上,或者换本地挂载
+      如果是 docker 挂载本地,请保证文件挂载进去了,并且配置的是绝对路径。
+      自定义 shell 脚本里面如果要加 crontab 任务请使用 echo 追加到 /scripts/docker/merged_list_file.sh 里面否则不生效
+ 注⚠️ 建议无shell能力的不要轻易使用,当然你可以找别人写好适配了这个docker镜像的脚本直接远程配置
+     上面写了这么多如果还看不懂,不建议使用该变量功能。
_____
! ⚠️⚠️⚠️2020-12-11更新镜像启动方式,虽然兼容旧版的运行启动方式,但是强烈建议更新镜像和配置后使用
! 更新后`command:`指令配置不再需要
! 更新后可以使用自定义任务文件追加在默任务文件之后,比以前的完全覆盖多一个选择
! - 新的自定两个环境变量为 `CUSTOM_LIST_MERGE_TYPE`:自定文件的生效方式可选值为`append`,`overwrite`默认为`append` ; `CUSTOM_LIST_FILE`: 自定义文件的名字
! 更新镜像增减镜像更新通知,以后镜像如果更新之后,会通知用户更新

推荐使用docker-compose所以这里只介绍docker-compose使用方式

Docker安装

  • 国内一键安装 sudo curl -sSL https://get.daocloud.io/docker | sh
  • 国外一键安装 sudo curl -sSL get.docker.com | sh
  • 北京外国语大学开源软件镜像站 https://mirrors.bfsu.edu.cn/help/docker-ce/

docker-compose 安装(群晖nas docker自带安装了docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Ubuntu用户快速安装docker-compose

sudo apt-get update && sudo apt-get install -y python3-pip curl vim git moreutils
pip3 install --upgrade pip
pip install docker-compose

win10用户下载安装docker desktop

通过docker-compose version查看docker-compose版本,确认是否安装成功。

如果需要使用 docker 多个账户独立并发执行定时任务,参考这里

注⚠️:前提先理解学会使用这下面的教程

创建一个目录jd_scripts用于存放备份配置等数据,迁移重装的时候只需要备份整个jd_scripts目录即可

需要新建的目录文件结构参考如下:

jd_scripts
├── logs
│   ├── XXXX.log
│   └── XXXX.log
├── my_crontab_list.sh
└── docker-compose.yml
# 每3天的23:50分清理一次日志(互助码不清理,proc_file.sh对该文件进行了去重)
50 23 */3 * * find /scripts/logs -name '*.log' | grep -v 'sharecode' | xargs rm -rf

##############短期活动##############
# 小鸽有礼2(活动时间:2021年1月28日~2021年2月28日)
34 9 * * * node /scripts/jd_xgyl.js >> /scripts/logs/jd_jd_xgyl.log 2>&1

#女装盲盒 活动时间:2021-2-19至2021-2-25
5 7,23 19-25 2 * node /scripts/jd_nzmh.js >> /scripts/logs/jd_nzmh.log 2>&1

#京东极速版天天领红包 活动时间:2021-1-18至2021-3-3
5 0,23 * * * node /scripts/jd_speed_redpocke.js >> /scripts/logs/jd_speed_redpocke.log 2>&1
##############长期活动##############
# 签到
3 0,18 * * * cd /scripts && node jd_bean_sign.js >> /scripts/logs/jd_bean_sign.log 2>&1
# 东东超市兑换奖品
0,30 0 * * * node /scripts/jd_blueCoin.js >> /scripts/logs/jd_blueCoin.log 2>&1
# 摇京豆
0 0 * * * node /scripts/jd_club_lottery.js >> /scripts/logs/jd_club_lottery.log 2>&1
# 东东农场
5 6-18/6 * * * node /scripts/jd_fruit.js >> /scripts/logs/jd_fruit.log 2>&1
# 宠汪汪
15 */2 * * * node /scripts/jd_joy.js >> /scripts/logs/jd_joy.log 2>&1
# 宠汪汪喂食
15 */1 * * * node /scripts/jd_joy_feedPets.js >> /scripts/logs/jd_joy_feedPets.log 2>&1
# 宠汪汪偷好友积分与狗粮
13 0-21/3 * * * node /scripts/jd_joy_steal.js >> /scripts/logs/jd_joy_steal.log 2>&1
# 摇钱树
0 */2 * * * node /scripts/jd_moneyTree.js >> /scripts/logs/jd_moneyTree.log 2>&1
# 东东萌宠
5 6-18/6 * * * node /scripts/jd_pet.js >> /scripts/logs/jd_pet.log 2>&1
# 京东种豆得豆
0 7-22/1 * * * node /scripts/jd_plantBean.js >> /scripts/logs/jd_plantBean.log 2>&1
# 京东全民开红包
1 1 * * * node /scripts/jd_redPacket.js >> /scripts/logs/jd_redPacket.log 2>&1
# 进店领豆
10 0 * * * node /scripts/jd_shop.js >> /scripts/logs/jd_shop.log 2>&1
# 京东天天加速
8 */3 * * * node /scripts/jd_speed.js >> /scripts/logs/jd_speed.log 2>&1
# 东东超市
11 1-23/5 * * * node /scripts/jd_superMarket.js >> /scripts/logs/jd_superMarket.log 2>&1
# 取关京东店铺商品
55 23 * * * node /scripts/jd_unsubscribe.js >> /scripts/logs/jd_unsubscribe.log 2>&1
# 京豆变动通知
0 10 * * * node /scripts/jd_bean_change.js >> /scripts/logs/jd_bean_change.log 2>&1
# 京东抽奖机
11 1 * * * node /scripts/jd_lotteryMachine.js >> /scripts/logs/jd_lotteryMachine.log 2>&1
# 京东排行榜
11 9 * * * node /scripts/jd_rankingList.js >> /scripts/logs/jd_rankingList.log 2>&1
# 天天提鹅
18 * * * * node /scripts/jd_daily_egg.js >> /scripts/logs/jd_daily_egg.log 2>&1
# 金融养猪
12 * * * * node /scripts/jd_pigPet.js >> /scripts/logs/jd_pigPet.log 2>&1
# 点点券
20 0,20 * * * node /scripts/jd_necklace.js >> /scripts/logs/jd_necklace.log 2>&1
# 京喜工厂
20 * * * * node /scripts/jd_dreamFactory.js >> /scripts/logs/jd_dreamFactory.log 2>&1
# 东东小窝
16 6,23 * * * node /scripts/jd_small_home.js >> /scripts/logs/jd_small_home.log 2>&1
# 东东工厂
36 * * * * node /scripts/jd_jdfactory.js >> /scripts/logs/jd_jdfactory.log 2>&1
# 十元街
36 8,18 * * * node /scripts/jd_syj.js >> /scripts/logs/jd_syj.log 2>&1
# 京东快递签到
23 1 * * * node /scripts/jd_kd.js >> /scripts/logs/jd_kd.log 2>&1
# 京东汽车(签到满500赛点可兑换500京豆)
0 0 * * * node /scripts/jd_car.js >> /scripts/logs/jd_car.log 2>&1
# 领京豆额外奖励(每日可获得3京豆)
33 4 * * * node /scripts/jd_bean_home.js >> /scripts/logs/jd_bean_home.log 2>&1
# 微信小程序京东赚赚
10 11 * * * node /scripts/jd_jdzz.js >> /scripts/logs/jd_jdzz.log 2>&1
# 宠汪汪邀请助力
10 9-20/2 * * * node /scripts/jd_joy_run.js >> /scripts/logs/jd_joy_run.log 2>&1
# crazyJoy自动每日任务
10 7 * * * node /scripts/jd_crazy_joy.js >> /scripts/logs/jd_crazy_joy.log 2>&1
# 京东汽车旅程赛点兑换金豆
0 0 * * * node /scripts/jd_car_exchange.js >> /scripts/logs/jd_car_exchange.log 2>&1
# 导到所有互助码
47 7 * * * node /scripts/jd_get_share_code.js >> /scripts/logs/jd_get_share_code.log 2>&1
# 口袋书店
7 8,12,18 * * * node /scripts/jd_bookshop.js >> /scripts/logs/jd_bookshop.log 2>&1
# 京喜农场
0 9,12,18 * * * node /scripts/jd_jxnc.js >> /scripts/logs/jd_jxnc.log 2>&1
# 签到领现金
27 */4 * * * node /scripts/jd_cash.js >> /scripts/logs/jd_cash.log 2>&1
# 京喜app签到
39 7 * * * node /scripts/jx_sign.js >> /scripts/logs/jx_sign.log 2>&1
# 京东家庭号(暂不知最佳cron)
# */20 * * * * node /scripts/jd_family.js >> /scripts/logs/jd_family.log 2>&1
# 闪购盲盒
27 8 * * * node /scripts/jd_sgmh.js >> /scripts/logs/jd_sgmh.log 2>&1
# 京东秒秒币
10 7 * * * node /scripts/jd_ms.js >> /scripts/logs/jd_ms.log 2>&1
#美丽研究院
1 7,12,19 * * * node /scripts/jd_beauty.js >> /scripts/logs/jd_beauty.log 2>&1
#京东保价
1 0,23 * * * node /scripts/jd_price.js >> /scripts/logs/jd_price.log 2>&1
#京东极速版签到+赚现金任务
1 1,6 * * * node /scripts/jd_speed_sign.js >> /scripts/logs/jd_speed_sign.log 2>&1
# 删除优惠券(默认注释,如需要自己开启,如有误删,已删除的券可以在回收站中还原,慎用)
#20 9 * * 6 node /scripts/jd_delCoupon.js >> /scripts/logs/jd_delCoupon.log 2>&1

定时任务命之后,也就是 >> 符号之前加上 |ts 可在日志每一行前面显示时间,如下图: 

  • 目录文件配置好之后在 jd_scripts目录执行。
    docker-compose up -d 启动(修改docker-compose.yml后需要使用此命令使更改生效);
    docker-compose logs 打印日志;
    docker-compose logs -f 打印日志,-f表示跟随日志;
    docker logs -f jd_scripts 和上面两条相比可以显示汉字;
    docker-compose pull 更新镜像;多容器用户推荐使用docker pull lxk0301/jd_scripts
    docker-compose stop 停止容器;
    docker-compose restart 重启容器;
    docker-compose down 停止并删除容器;
  • 你可能会用到的命令docker exec -it jd_scripts /bin/sh -c ". /scripts/docker/auto_help.sh export > /scripts/logs/auto_help_export.log && node /scripts/xxxx.js |ts >> /scripts/logs/xxxx.log 2>&1" 手动运行一脚本(有自动助力)docker exec -it jd_scripts /bin/sh -c "node /scripts/xxxx.js |ts >> /scripts/logs/xxxx.log 2>&1" 手动运行一脚本(无自动助力)docker exec -it jd_scripts /bin/sh -c 'env' 查看设置的环境变量docker exec -it jd_scripts /bin/sh -c 'crontab -l' 查看已生效的crontab_list定时器任务docker exec -it jd_scripts sh -c "git pull" 手动更新jd_scripts仓库最新脚本(默认已有每天拉取两次的定时任务,不推荐使用)docker exec -it jd_scripts /bin/sh 仅进入容器命令rm -rf logs/*.log 删除logs文件夹里面所有的日志文件(linux)docker exec -it jd_scripts /bin/sh -c ' ls jd_*.js | grep -v jd_crazy_joy_coin.js |xargs -i node {}' 执行所有定时任务
  • 如果是群晖用户,在docker注册表搜jd_scripts,双击下载映像。 不需要docker-compose.yml,只需建个logs/目录,调整jd_scripts.syno.json里面对应的配置值,然后导入json配置新建容器。 若要自定义my_crontab_list.sh,再建个my_crontab_list.sh文件,配置参考jd_scripts.my_crontab_list.syno.json。 
image
image

DOCKER专属环境变量

Name归属属性说明
CRZAY_JOY_COIN_ENABLE是否jd_crazy_joy_coin挂机非必须docker-compose.yml文件下填写CRZAY_JOY_COIN_ENABLE=Y表示挂机,CRZAY_JOY_COIN_ENABLE=N表不挂机
DO_NOT_RUN_SCRIPTS不执行的脚本非必须例:docker-compose.yml文件里面填写DO_NOT_RUN_SCRIPTS=jd_family.js&jd_dreamFactory.js&jd_jxnc.js, 建议填写完整脚本名,不完整的文件名可能导致其他脚本被禁用
ENABLE_AUTO_HELP单容器多账号自动互助非必须例:docker-compose.yml文件里面填写ENABLE_AUTO_HELP=true

如何正则表达式的方法获取img标签和图片地址

比如下面的一段html标签中,如何取出img标签和图片地址: 

<div class="good-item"><ul class="clearfix"data-product-list=""><li><a href="/mobile/index/shenruDeatil/id/741"style="position: relative;"><em class="hot-label">热</em><img src="/upload/gallery/thumbnail/4CEDD57F-8D89-3346-129883902F59-tbl.jpg"><div class="good-text"><div class="good-name">1号牛皮纸盒</div><span class="pcolor">¥</span><span class="singlePrice"><!--0.720-->0.72</span><span>/个</span></div></a></li><li><a href="/mobile/index/goodsDeatil/id/257"style="position: relative;"><em class="hot-label">热</em><img src="/upload/gallery/thumbnail/10B4AE18-7B30-7873-D4F03F0842E2-tbl.jpg"><div class="good-text"><div class="good-name">手挽袋</div><span class="pcolor">¥</span><span class="singlePrice"><!--250.00-->250</span><span>/件</span></div></a></li><li><a href="/mobile/index/goodsDeatil/id/249"style="position: relative;"><em class="hot-label">热</em><img src="/upload/gallery/thumbnail/51AAFC9A-188E-2934-937CC221BBF2-tbl.jpg"><div class="good-text"><div class="good-name">4#牛皮纸袋</div><span class="pcolor">¥</span><span class="singlePrice"><!--160.00-->160</span><span>/件</span></div></a></li><li><a href="/mobile/index/goodsDeatil/id/661"style="position: relative;"><em class="hot-label">热</em><img src="/upload/gallery/thumbnail/BEB3E265-347A-5135-789673024100-tbl.jpg"><div class="good-text"><div class="good-name">双童艺术吸管</div><span class="pcolor">¥</span><span class="singlePrice"><!--100.00-->100</span><span>/件</span></div></a></li></ul></div>

我们采用正则表达式的方法获取img标签和图片地址:

  1. 1.获取img标签的正则写法:/<img(.*?)>/
  2. 2.获取图片src属性的正则,以”<img”开始,中间考虑到空格、单引号、双引号等,最后结果为:/<img.+src=\”?(.+\.(jpg|jpeg|gif|bmp|bnp|png))\”?.+>/i

PHP代码如下:

preg_match_all('/<img(.*?)>/', $html, $match); //$html = <<<HTML 上面的html文本 >>>;$images = $match[0];foreach ($images as $key=>$val){    preg_match('/<img.+src=\s*[\"|\']?(.+\.(jpg|jpeg|gif|bmp|bnp|png))[\"|\']?.+>/i', $val, $res);    $arr[$key]['img_tag'] = $val;    $arr[$key]['img_path'] = $res[1];}var_dump(arr);

打印结果如下:

array(4) {    [0]=>    array(2) {    ["img_tag"]=> string(77) "<img src="/upload/gallery/thumbnail/4CEDD57F-8D89-3346-129883902F59-tbl.jpg">"    ["img_path"]=> string(65) "/upload/gallery/thumbnail/4CEDD57F-8D89-3346-129883902F59-tbl.jpg"    }    [1]=>    array(2) {    ["img_tag"]=> string(77) "<img src="/upload/gallery/thumbnail/10B4AE18-7B30-7873-D4F03F0842E2-tbl.jpg">"    ["img_path"]=> string(65) "/upload/gallery/thumbnail/10B4AE18-7B30-7873-D4F03F0842E2-tbl.jpg"    }    [2]=>    array(2) {    ["img_tag"]=> string(77) "<img src="/upload/gallery/thumbnail/51AAFC9A-188E-2934-937CC221BBF2-tbl.jpg">"    ["img_path"]=> string(65) "/upload/gallery/thumbnail/51AAFC9A-188E-2934-937CC221BBF2-tbl.jpg"    }    [3]=>    array(2) {    ["img_tag"]=> string(77) "<img src="/upload/gallery/thumbnail/BEB3E265-347A-5135-789673024100-tbl.jpg">"    ["img_path"]=> string(65) "/upload/gallery/thumbnail/BEB3E265-347A-5135-789673024100-tbl.jpg"    }    }

图片地址不是实际路径,仅供参考。