2017年5月20日星期六

log standard out generate by python print in supervisor log

method 1

python -u xxx.py

method 2

import sys
sys.stdout.flush() # add this line afeter each print 

method 3 (python3 only)

print(xxx, flush=True) 

method 4: use logging

import logging
logging.info(xxx)
logging.error(xxx)

method 1

python -u xxx.py

method 2

import sys
sys.stdout.flush() # add this line afeter each print 

method 3 (python3 only)

print(xxx, flush=True) 

method 4: use logging

import logging
logging.info(xxx)
logging.error(xxx)

2017年5月18日星期四

2017年4月26日星期三

利用nmap扫描代理

目前在开发一个爬虫,但是很多网站都会对访问做限制,最简单的解决方式就是降低爬虫的频率,然后就是使用代理来访问了,目前有不少免费代理的公布网站,但这种公开的代理,访问的人多了,速度就会受到影响,而且一般很快就会被关掉,所以有能力最好自己去扫描代理。

其实常用的端口扫描工具nmap就可以实现自动扫描代理的目的,具体命令如下:

nmap -n -sS --host_timeout 1000 -iR 100000 -T4 --script http-open-proxy  --script-args proxy.url=http://www.qq.com/,proxy.pattern=tencent -p 8080,80,8001,3128,8888,9999 -v -oG result.txt

下面是参数说明:

-n 不解析DNS,不需要解析DNS,而且因为我们需要扫描大量主机,解析DNS会对扫描速度造成较大影响
-sS 使用TCP SYN方式扫描主机,速度快,而且不易被发现
--host_timeout 1000 扫描超时时间,单位毫秒,主要是过滤太慢的主机,而且可以加快扫描速度
-iR 10000 随机挑选10000个主机扫描
-T4 指定扫描过程使用的时序(Timing),总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况良好的情况推荐使用T4
--script http-open-proxy 使用http-open-proxy来检测主机的代理服务是否可以使用
--script-args proxy.url=http://www.qq.com/,proxy.pattern=tencent http-open-proxy接受的参数,不传默认通过google,Wikipedia,Computerhistory,国内有可能无法访问或者比较慢,所以替换成国内的网站
-p 8080,80,8001,3128,8888,9999 扫描一些参见的代理服务端口
-v 打开调试信息
-oG result.txt 将扫描结果以grepable的格式保存到文件中。

目前在开发一个爬虫,但是很多网站都会对访问做限制,最简单的解决方式就是降低爬虫的频率,然后就是使用代理来访问了,目前有不少免费代理的公布网站,但这种公开的代理,访问的人多了,速度就会受到影响,而且一般很快就会被关掉,所以有能力最好自己去扫描代理。

其实常用的端口扫描工具nmap就可以实现自动扫描代理的目的,具体命令如下:

nmap -n -sS --host_timeout 1000 -iR 100000 -T4 --script http-open-proxy  --script-args proxy.url=http://www.qq.com/,proxy.pattern=tencent -p 8080,80,8001,3128,8888,9999 -v -oG result.txt

下面是参数说明:

-n 不解析DNS,不需要解析DNS,而且因为我们需要扫描大量主机,解析DNS会对扫描速度造成较大影响
-sS 使用TCP SYN方式扫描主机,速度快,而且不易被发现
--host_timeout 1000 扫描超时时间,单位毫秒,主要是过滤太慢的主机,而且可以加快扫描速度
-iR 10000 随机挑选10000个主机扫描
-T4 指定扫描过程使用的时序(Timing),总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况良好的情况推荐使用T4
--script http-open-proxy 使用http-open-proxy来检测主机的代理服务是否可以使用
--script-args proxy.url=http://www.qq.com/,proxy.pattern=tencent http-open-proxy接受的参数,不传默认通过google,Wikipedia,Computerhistory,国内有可能无法访问或者比较慢,所以替换成国内的网站
-p 8080,80,8001,3128,8888,9999 扫描一些参见的代理服务端口
-v 打开调试信息
-oG result.txt 将扫描结果以grepable的格式保存到文件中。

2017年4月23日星期日

nginx enable http2 ALPN

$ yum install pcre-devel zlib unzip git

# 1. Install a package with repository for your system:
# On CentOS, install package centos-release-scl available in CentOS repository:
$ sudo yum install centos-release-scl

# On RHEL, enable RHSCL repository for you system:
$ sudo yum-config-manager --enable rhel-server-rhscl-7-rpms

# 2. Install the collection:
$ sudo yum install devtoolset-3-gcc

# 3. Start using software collections:
$ scl enable devtoolset-3 bash

# 4. verify install 
$ gcc --version
# gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
# Copyright (C) 2014 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions.  There is NO
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

# download patch

$ git clone https://github.com/cloudflare/sslconfig.git
# download openssl-1.0.2g
$ wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2g.tar.gz

# untar 
$ tar -zxvf openssl-1.0.2g.tar.gz
$ cd openssl-1.0.2g
$ patch -p1 < openssl__chacha20_poly1305_draft_and_rfc_ossl102g.patch
$ ./config --prefix=/usr/local/openssl-1.0.2g --openssldir=/etc/ssl --libdir=lib shared zlib-dynamic
$ make depend
## make && make install

# install nginx
## 
$ git clone https://github.com/grahamedgecombe/nginx-ct.git


## download 
$ wget https://nginx.org/download/nginx-1.10.3.tar.gz
$ tar zxvf nginx-1.10.3.tar.gz
$ cd nginx-1.10.3
$ patch -p1 < ../sslconfig/patches/nginx__dynamic_tls_records.patch
$ ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx  --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module  --add-module=../nginx-ct --with-openssl=/data/downloads/openssl-1.0.2g/
$ make && make install
 
$ yum install pcre-devel zlib unzip git

# 1. Install a package with repository for your system:
# On CentOS, install package centos-release-scl available in CentOS repository:
$ sudo yum install centos-release-scl

# On RHEL, enable RHSCL repository for you system:
$ sudo yum-config-manager --enable rhel-server-rhscl-7-rpms

# 2. Install the collection:
$ sudo yum install devtoolset-3-gcc

# 3. Start using software collections:
$ scl enable devtoolset-3 bash

# 4. verify install 
$ gcc --version
# gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
# Copyright (C) 2014 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions.  There is NO
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

# download patch

$ git clone https://github.com/cloudflare/sslconfig.git
# download openssl-1.0.2g
$ wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2g.tar.gz

# untar 
$ tar -zxvf openssl-1.0.2g.tar.gz
$ cd openssl-1.0.2g
$ patch -p1 < openssl__chacha20_poly1305_draft_and_rfc_ossl102g.patch
$ ./config --prefix=/usr/local/openssl-1.0.2g --openssldir=/etc/ssl --libdir=lib shared zlib-dynamic
$ make depend
## make && make install

# install nginx
## 
$ git clone https://github.com/grahamedgecombe/nginx-ct.git


## download 
$ wget https://nginx.org/download/nginx-1.10.3.tar.gz
$ tar zxvf nginx-1.10.3.tar.gz
$ cd nginx-1.10.3
$ patch -p1 < ../sslconfig/patches/nginx__dynamic_tls_records.patch
$ ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx  --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module  --add-module=../nginx-ct --with-openssl=/data/downloads/openssl-1.0.2g/
$ make && make install
 

2017年4月20日星期四

Nginx enable http2

Nginx enable http2

change Nginx config

listen 443 ssl http2

mac curl

curl -I --http2 https://www.cloudflare.com/
curl: (1) Unsupported protocol

brew install --force curl --with-nghttp2
~ yan% brew link curl
Warning: curl is keg-only and must be linked with --force
Note that doing so can interfere with building software.

If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/usr/local/opt/curl/bin:$PATH"' >> ~/.zshrc
~ yan% brew link --force curl
Linking /usr/local/Cellar/curl/7.54.0... 377 symlinks created

If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/usr/local/opt/curl/bin:$PATH"' >> ~/.zshrc

Nginx enable http2

change Nginx config

listen 443 ssl http2

mac curl

curl -I --http2 https://www.cloudflare.com/
curl: (1) Unsupported protocol

brew install --force curl --with-nghttp2
~ yan% brew link curl
Warning: curl is keg-only and must be linked with --force
Note that doing so can interfere with building software.

If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/usr/local/opt/curl/bin:$PATH"' >> ~/.zshrc
~ yan% brew link --force curl
Linking /usr/local/Cellar/curl/7.54.0... 377 symlinks created

If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/usr/local/opt/curl/bin:$PATH"' >> ~/.zshrc

Ignore git file mode

When you sync a git repo to windows, the mode of the files will changed to 755, which is 644 under linux. Git will treat these files as modified and need commit. GIt can be configured ignoring this changes by execute following command:

git config core.fileMode false
When you sync a git repo to windows, the mode of the files will changed to 755, which is 644 under linux. Git will treat these files as modified and need commit. GIt can be configured ignoring this changes by execute following command:

git config core.fileMode false

2017年4月19日星期三

blogger国内访问

经过一番折腾,实现了blogger的国内访问,过程记录如下

设置域名

  • blogger后台设置自定义域名
  • 通过超级ping寻找ghs.google.com国内可以访问的地址,可以多找几个备用
  • 注册360网站卫士添加解析www.example.com到以上ip的A记录,360会返回一个CNAME的地址
  • 在域名管理后台添加www.example.com的CNAME到以上360提供的CNAME记录

设置模版

替换静态文件

常用的国内CDN加速,常用的js库,字体可以先在上面搜一下,如果没有再上传到自己的CDN上

禁用系统静态文件

图床/其他静态文件

推荐七牛,实名认证以后每个月有10G的免费流量

禁用快速编辑

搜索模版内以下内容然后删除

<b:include name='quickedit'/>

评论系统

disqus我这里貌似被墙,国内用的比较多的多说也要关闭了,不过还好有替代方案:网易云跟帖,具体步骤按照说明一步一步来就可以了,这里就不在赘述了。

经过一番折腾,实现了blogger的国内访问,过程记录如下

设置域名

  • blogger后台设置自定义域名
  • 通过超级ping寻找ghs.google.com国内可以访问的地址,可以多找几个备用
  • 注册360网站卫士添加解析www.example.com到以上ip的A记录,360会返回一个CNAME的地址
  • 在域名管理后台添加www.example.com的CNAME到以上360提供的CNAME记录

设置模版

替换静态文件

常用的国内CDN加速,常用的js库,字体可以先在上面搜一下,如果没有再上传到自己的CDN上

禁用系统静态文件

图床/其他静态文件

推荐七牛,实名认证以后每个月有10G的免费流量

禁用快速编辑

搜索模版内以下内容然后删除

<b:include name='quickedit'/>

评论系统

disqus我这里貌似被墙,国内用的比较多的多说也要关闭了,不过还好有替代方案:网易云跟帖,具体步骤按照说明一步一步来就可以了,这里就不在赘述了。