NGINX 反爬策略

  |  
阅读次数
  |  
字数 221
  |  
时长 ≈ 1 分钟

1)配置agent_deny.conf

在nginx的conf目录下新增agent_deny.conf配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot|Catall Spider|AcoiRobot|Yisou|bingbot|360Spider") { 
return 403;
}

if ($http_user_agent ~ "WinHttp|WebZIP|FetchURL|node-superagent|FeedDemon|Jullo|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|MJ12bot|heritrix|EasouSpider|Ezooms|BOT/0.1|YandexBot|FlightDeckReports|Linguee Bot|iaskspider|^$") {
return 403;
}

if ($request_method !~ ^(GET|POST)$) {
return 403;
}

if ($http_user_agent ~* (Python|Wget|Scrapy|Spider)) {
return 403;
}

2)修改反向代理配置文件

在具体的location下面配置 include agent_deny.conf
如:

1
2
3
4
5
6
7
8
9
10
11
12
13
# Server
server {
listen 80;
server_name localhost;
charset utf-8;

location / {
# 此设置在 http, server, location 节点都可以设置;设置了 nodelay 将不会等待
limit_req zone=ratelimit burst=20 nodelay;
include agent_deny.conf;
proxy_pass http://127.0.0.1:8080/java-web;
}
}

Vue webpack打包src路径问题

  |  
阅读次数
  |  
字数 599
  |  
时长 ≈ 3 分钟

使用vue的时候,因为图片路径为动态数据,下面这样直接将数据传入元素,编译输出后路径将会是原始相对路径的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<template>
<div id="cover-container">
<template v-for="(cover,index) in coverList">
<div :key="index" @click="openPage(cover.url)" class="cover">
<template v-if="index === 0">
<span class="cover_title">{{cover.title}}</span>
<img v-bind:src="cover.banner" class="cover_img_top">
</template>
<template v-else>
<img v-bind:src="cover.banner" class="cover_img_other">
</template>
<span class="cover_desc" v-html="cover.desc"></span>
</div>
<span v-if="index!=coverList.length-1" :key="index" class="line"></span>
</template>
</div>
</template>

Read More

Charles Map Remote使用

  |  
阅读次数
  |  
字数 290
  |  
时长 ≈ 1 分钟

使用Map Remote功能进行远程调试。

授权回调中间页正式转本地测试:

1.获取正式原始地址

https://im.189.cn/weixinopen/outserver/link/promotions

2.转化为测试域名

http://ag1.imp.189.cn/weixinopentest/outserver/link/promotions

3.将其转化为base64

aHR0cDovL2FnMS5pbXAuMTg5LmNuL3dlaXhpbm9wZW50ZXN0L291dHNlcnZlci9saW5rL3Byb21vdGlvbnM=

4.将其放到测试线授权回调格式后面

http://ag1.imp.189.cn/weixinopentest/outserver/oauth/getOpenid?url=aHR0cDovL2FnMS5pbXAuMTg5LmNuL3dlaXhpbm9wZW50ZXN0L291dHNlcnZlci9saW5rL3Byb21vdGlvbnM=

5.将其发送到v盟测试号

Read More

IDEA 设置忽略文件类型

  |  
阅读次数
  |  
字数 55
  |  
时长 ≈ 1 分钟

Editor -> File Types

Ignore files and folders 下面的输入框替换成以下代码:

1
*.hprof;*.iml;*.ipr;*.iws;*.original;*.pyc;*.pyo;*.rbc;*.yarb;*~;.DS_Store;.classpath;.git;.hg;.idea;.project;.settings;.svn;CVS;__pycache__;_svn;generated-test-sources;maven-archiver;maven-status;test-classes;vssver.scc;vssver2.scc;

Mac iterm2使用expect实现SSH自动登陆

  |  
阅读次数
  |  
字数 389
  |  
时长 ≈ 2 分钟

安装brew

先确保已经安装了brew,我们将使用brew来安装我们需要的命令和软件。

1
brew --version

1
2
Homebrew 1.5.10
Homebrew/homebrew-core (git revision c3f55; last commit 2018-03-14)

安装iterm2

命令行工具。

1
brew cask install iterm2

安装expect

expect的作用是当遇到指定命令之后执行对应命令。

1
brew install expect

1
expect -version
1
expect version 5.45

## 编写自动登录脚本
/usr/local/bin/目录下,新建iterm2login.sh文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/expect

set timeout 30
spawn ssh -p [lindex $argv 0] [lindex $argv 1]@[lindex $argv 2]
expect {
"(yes/no)?"
{send "yes\n";exp_continue}
"password:"
{send "[lindex $argv 3]\n"}
"Password:"
{send "[lindex $argv 3]\n"}
}
interact

Read More

微信公众号 被动回复超时问题

  |  
阅读次数
  |  
字数 517
  |  
时长 ≈ 2 分钟

问题描述

微信公众号 被动回复超时问题1
先看一下上图,我在公号上面输入,,,到公号后端服务,被动响应之前,这个字符会调用一个内部接口,主要是查询答案,然后返回到公号后端,然后后端服务再处理报文后,做被动响应操作。

正常操作结果就是像第一个一样,返回处理后的文字向导。
但是输入第二个积分多少的时候,公号就显示出该公众号提供的服务出现故障,请稍后再试,这并不是正常的处理结果。

Read More

Android AndroidStudio

  |  
阅读次数
  |  
字数 320
  |  
时长 ≈ 1 分钟

启动界面下载sdk卡住

1
Downloading https://dl.google.com/android/repository/android_m2repository_r47.zip 卡住

需要设置vpn,如果是Shadowsocks,则设置如下:
设置完之后,可能刚开始下载进度条会一直卡在0,需要等待,后面就会看到进度条了。
Androidstudio_1

Read More

Linux awk

  |  
阅读次数
  |  
字数 2,819
  |  
时长 ≈ 16 分钟

假用如下数据演示awk。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ cat netstat.txt
Proto Recv-Q Send-Q Local-Address Foreign-Address State
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
tcp 0 0 coolshell.cn:80 124.205.5.146:18245 TIME_WAIT
tcp 0 0 coolshell.cn:80 61.140.101.185:37538 FIN_WAIT2
tcp 0 0 coolshell.cn:80 110.194.134.189:1032 ESTABLISHED
tcp 0 0 coolshell.cn:80 123.169.124.111:49809 ESTABLISHED
tcp 0 0 coolshell.cn:80 116.234.127.77:11502 FIN_WAIT2
tcp 0 0 coolshell.cn:80 123.169.124.111:49829 ESTABLISHED
tcp 0 0 coolshell.cn:80 183.60.215.36:36970 TIME_WAIT
tcp 0 4166 coolshell.cn:80 61.148.242.38:30901 ESTABLISHED
tcp 0 1 coolshell.cn:80 124.152.181.209:26825 FIN_WAIT1
tcp 0 0 coolshell.cn:80 110.194.134.189:4796 ESTABLISHED
tcp 0 0 coolshell.cn:80 183.60.212.163:51082 TIME_WAIT
tcp 0 1 coolshell.cn:80 208.115.113.92:50601 LAST_ACK
tcp 0 0 coolshell.cn:80 123.169.124.111:49840 ESTABLISHED
tcp 0 0 coolshell.cn:80 117.136.20.85:50025 FIN_WAIT2
tcp 0 0 :::22 :::* LISTEN

基本操作

过滤第一列与第四列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ awk '{print $1,$4}' netstat.txt
Proto Local-Address
tcp 0.0.0.0:3306
tcp 0.0.0.0:80
tcp 127.0.0.1:9000
tcp coolshell.cn:80
tcp coolshell.cn:80
tcp coolshell.cn:80
tcp coolshell.cn:80
tcp coolshell.cn:80
tcp coolshell.cn:80
tcp coolshell.cn:80
tcp coolshell.cn:80
tcp coolshell.cn:80
tcp coolshell.cn:80
tcp coolshell.cn:80
tcp coolshell.cn:80
tcp coolshell.cn:80
tcp coolshell.cn:80
tcp :::22

Read More

Docker 容器挂载宿主机环境

  |  
阅读次数
  |  
字数 844
  |  
时长 ≈ 4 分钟

使用Docker在一台宿主机上面部署多个Java应用镜像的时候并不是将jdk软件包打入镜像,而是选择将jdk部署在每台宿主上,在运行镜像时,通过挂载目录的方式将宿主机上的java home目录挂载至容器指定目录下,从而减少镜像的臃肿与环境的重用。

此次我们使用jdk和maven来测试。

下载

我们通过官网选择相应版本包进行下载;

JDK:jdk-8u181-linux-x64.tar.gz

MAVEN:apache-maven-3.5.4-bin.tar.gz

解压

在软件包下载目录下执行解压命令:

1
2
3
tar zxvf jdk-8u181-linux-x64.tar.gz

tar zxvf apache-maven-3.5.4-bin.tar.gz

解压完成后看到文件路径如下:

1
2
3
4
5
6
7
# tidy @ TidydeMBP in ~/Documents/docker_env [15:48:44] C:130
$ ll
total 411864
drwxr-xr-x 9 tidy staff 288B 9 13 15:27 apache-maven-3.5.4
-rw-r--r--@ 1 tidy staff 8.4M 9 13 15:20 apache-maven-3.5.4-bin.tar.gz
-rw-r--r--@ 1 tidy staff 177M 9 13 15:26 jdk-8u181-linux-x64.tar.gz
drwxr-xr-x@ 15 tidy staff 480B 7 7 16:09 jdk1.8.0_181

Dockerfile

编写Dockerfile生成测试镜像:

1
2
3
4
5
6
7
8
9
10
11
12
#Dockerfile构建依赖于宿主机的jdk于maven环境
FROM centos

#设置镜像JDK、MAVEN环境变量
ENV JAVA_HOME=/usr/local/jdk
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV MAVEN_HOME /usr/local/maven
ENV PATH $PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin

#输出JDK、MAVEN版本
CMD ["java", "-version"]
CMD ["mvn", "-v"]

Read More

Docker 搭建ELK环境

  |  
阅读次数
  |  
字数 4,798
  |  
时长 ≈ 25 分钟

Mac使用Docker搭建便捷的ELK环境。

ELK + redis 使用docker搭建,FileBeat由具体应用机进行搭建。

架构如下:

Docker 搭建ELK环境-图例1

1.获取ELK镜像.

1
2
3
4
5
6
7
8
9
10
11
# tidy @ TidydeMBP in ~ [10:02:28]
$ sudo docker pull sebp/elk
Password:
Using default tag: latest
latest: Pulling from sebp/elk
281a73dee007: Pulling fs layer
...
...
...
Digest: sha256:94c4aa7f9bfe0fe7047f20e1c747ac19538605f8ea0bbe401c7bed923614905e
Status: Downloaded newer image for sebp/elk:latest

2.创建并运行ELK容器

2.1.使用命令行

2.1.1.使用命令行参数

使用下面命令创建并启动一个elk容器,并映射宿主机端口。

1
$ sudo docker run -d -p 5601:5601 -p 9200:9200 -p 5044:5044 -v ~/Documents/docker_env/elasticsearch:/var/lib/elasticsearch -v ~/Documents/docker_env/logstash/config:/opt/logstash/config -v  ~/Documents/docker_env/logstash/conf.d:/etc/logstash/conf.d -it --name elk sebp/elk:651

2.1.2.使用Docker Compose

编写docker-compose.yml文件

1
2
3
4
5
6
7
8
9
10
elk:
image: sebp/elk:651
ports:
- "5601:5601"
- "9200:9200"
- "5044:5044"
volumes:
- ~/Documents/docker_env/elasticsearch:/var/lib/elasticsearch
- ~/Documents/docker_env/logstash/config:/opt/logstash/config
- ~/Documents/docker_env/logstash/conf.d:/etc/logstash/conf.d

然后运行以下命令:

1
$ sudo docker-compose up -d

2.1.3.检查挂载的目录

如果挂载的宿主机目录已经有文件,有可能会直接将docker里面的文件夹直接全部情况再同步宿主机文件夹,遇到这种情况需要第一次构建时不挂载虚拟目录,将需挂载的文件夹文件复制到宿主机后,重新创建容器,再将原本的文件放到宿主机挂载的文件夹里面,确保文件不丢失后再自己修改或者新增配置文件。

2.1.4.重启elk容器

当停止运行之后可以直接使用以下命令直接启动、或者重启elk

1
2
3
docker start elk

docker restart elk

2.2.使用kiteMatic

Read More