存档在 ‘【技术】’ 分类

怎样使用Scratch

2018年6月7日

temp

怎样使用python-whois

2018年6月6日

参考:http://amon.org/pythonwhois
参考:http://amon.org/python-whois

【介绍】

python-whois,别称 pywhois

官网:https://pypi.org/project/python-whois/
手册:https://bitbucket.org/richardpenman/pywhois

参考:http://www.vuln.cn/8561
参考:https://www.justanswer.com/computer-programming/3nvxa-need-script-return-dictionary-following.html

【安装】

先安装 python-whois

pip install python-whois

Note that then you will need to manually install the futures module, which allows supporting both Python 2 & 3:

pip install python-whois
pip install futures

SOCKS Proxy support requirements:

pip install PySocks
export SOCKS=socksproxy.someplace.com:8080

【应用】

测试:

import whois
w = whois.whois('amon.org')
w.expiration_date
datetime.datetime(2021, 6, 3, 4, 0)
w.text
print w  # print values of all found attributes

添加后缀:

参考:http://www.vuln.cn/8561
意图:全网域名扫描项目
点评:结果返回dict格式;不同根域名返回的whois格式不同;针对不同whois格式做处理。

import whois
w = whois.whois('amon.org')
w.expiration_date
datetime.datetime(2021, 6, 3, 4, 0)
w.text
print w  # print values of all found attributes

项目:爱名网WHOIS查询

参考:https://whois.22.cn/test.io

域名test.io
注册商Key-Systems GmbH
域名状态ok https://icann.org/epp#ok(正常)
注册者testCloud.de GmbH
DNS服务器ruth.ns.cloudflare.com
DNS服务器sri.ns.cloudflare.com
注册日期2012-04-18
过期日期2019-04-18
更新日期2018-04-19

项目:OSTrICa

参考:http://amon.org/ostrica

项目:其他

参考:http://www.cnblogs.com/txw1958/archive/2012/08/31/python3-domain-whois.html

域名查询:万网提供了域名查询接口,接口采用HTTP协议;接口URL:http://panda.www.net.cn/cgi-bin/check.cgi
whois查询:由于没有找到像域名查询接口那样好的API,这里直接抓取站长之家的whois查询页面(http://whois.chinaz.com/)

参考:https://blog.csdn.net/WU_DENG9495/article/details/78617691

使用python将whois信息分片,存入数据库:whois服务器返回的whois字典信息会很长,有的域名的whois信息有2000+个字节,将返回的whois信息进行分片处理,程序选择将其分为9片,存入数据库中;也可以进行关键字匹配进行存储,但是得到的信息会不够全面, 两种方法各有优劣。

参考:https://blog.csdn.net/mrpre/article/details/18813953

怎样使用pythonwhois

2018年6月6日

参考:http://amon.org/python-whois
参考:http://amon.org/pythonwhois

【介绍】

Module for retrieving and parsing the WHOIS data for a domain. Supports most domains. Requires jwhois to be installed.

官网:http://cryto.net/pythonwhois/
手册:http://cryto.net/pythonwhois/usage.html

官网:https://pypi.org/project/pythonwhois/
官网:https://github.com/joepie91/python-whois
官网:https://code.activestate.com/pypm/pythonwhois/

参考:http://www.vuln.cn/8561
参考:https://www.justanswer.com/computer-programming/3nvxa-need-script-return-dictionary-following.html

【安装】

参考:http://cryto.net/pythonwhois/install.html

pip install pythonwhois

【应用】

项目:WebEye

功能:扫描WEB服务器类型,CMS类型,WAF类型,WHOIS信息,以及语言框架的小脚本。主要是使用异步实现指纹的快速识别。
官网:https://github.com/zerokeeper/WebEye
来源:https://www.southcity-oldboy.com/1834.html

依赖:

pip install gevent requests pythonwhois

安装:

git clone https://github.com/zerokeeper/WebEye.git && cd WebEye

使用:

python WebEye.py -u www.xpshell.cn​

怎样配置mod_wsgi让Apache支持Python

2018年6月5日

参考:https://www.jianshu.com/p/b40a4a12fff1
参考:http://www.cnblogs.com/Erick-L/p/7063173.html
参考:http://blog.sina.com.cn/s/blog_883a98da0101k8t0.html
参考:http://www.cnblogs.com/yestreenstars/p/5949037.html

【介绍】

建立Python与Apache的链接:为Apache安装Python解释器。

【安装】

官网:http://www.modwsgi.org/
下载:https://github.com/GrahamDumpleton/mod_wsgi/releases
文档:https://github.com/GrahamDumpleton/mod_wsgi/

指定Apache和Python环境,加上”–with-apxs”和”–with-python”选项:

wget https://github.com/GrahamDumpleton/mod_wsgi/archive/4.6.4.tar.gz && tar vxzf 4.6.4.tar.gz && cd mod_wsgi-4.6.4
./configure --with-apxs=/usr/local/apache2/bin/apxs --with-python=/usr/local/bin/python3.6
make && make install

输出:

...
Libraries have been installed in:
   /usr/local/apache2/modules

If you ever happen to want to link against installed libraries
...
chmod 755 /usr/local/apache2/modules/mod_wsgi.so

【配置】

在Apache配置文件中载入mod_wsgi:

打开Apache的配置文件httpd.conf,加上载入mod_wsgi的配置,以及文件格式:

LoadModule wsgi_module modules/mod_wsgi.so
<IfModule mime_module>
	TypesConfig conf/mime.types
...
	AddType application/x-httpd-wsgi .wsgi
...
	AddHandler wsgi-script .wsgi
</IfModule>

重启Apache来启用配置。

【测试】

参考:https://stackoverflow.com/questions/34838443/typeerror-sequence-of-byte-string-values-expected-value-of-type-str-found
参考:https://stackoverflow.com/questions/8349582/500-error-with-wsgi-in-django

在Apache的DocumentRoot根目录下创建一个文件”test.wsgi”。

def application(environ, start_response):
	status = '200 OK'
	output = b'Hello World!'

	response_headers = [('Content-type', 'text/plain'),
			('Content-Length', str(len(output)))]
	start_response(status, response_headers)

	return [output]

函数application即为WSGI应用对象,它返回的值就是该应用收到请求后的响应。

编辑 httpd-vhosts.conf :

<virtualhost *:80>
	ServerName codeabc.org
	ServerAlias www.codeabc.org
	DocumentRoot /usr/local/apache2/htdocs/codeabc.org/portal/
	WSGIScriptAlias /test /usr/local/apache2/htdocs/codeabc.org/portal/test.wsgi
	ErrorLog /usr/local/apache2/htdocs/logs/codeabc.org_error.log
	CustomLog /usr/local/apache2/htdocs/logs/codeabc.org_access.log combined
	<Directory /usr/local/apache2/htdocs/codeabc.org/portal>
		Options Indexes FollowSymLinks
		AllowOverride All
		Require all granted
	</Directory>
</VirtualHost>

WSGIScriptAlias那一行是URL路径映射。

重启Apache来启用配置。

打开浏览器,访问:http://codeabc.org/test

如果看到”Hello World!”,就说明mod_wsgi已经安装成功。

怎样安装django

2018年6月5日

【介绍】

官网:https://www.djangoproject.com/
下载:https://www.djangoproject.com/download/

【安装】

Django可以使用pip、git、源码包三种方式安装。

参考:https://jingyan.baidu.com/article/870c6fc32a1b90b03fe4be19.html

pip方式

pip install Django

输出:

...
Successfully installed Django-2.0.6 pytz-2018.4

安装路径:

Requirement already satisfied: pytz in /usr/local/lib/python3.6/site-packages (from Django) (2018.4)

【配置】

参考:http://www.cnblogs.com/oubo/archive/2012/04/06/2434961.html

参考:http://amon.org/mod_python
参考:http://amon.org/mod_wsgi

【实战】

部署django-cms。

下载:https://github.com/divio/django-cms/

文档:https://github.com/divio/django-cms/blob/develop/docs/how_to/install.rst

安装 django-cms:

pip install django-cms

安装 MySQL支持:

pip install mysqlclient

Django安家,让Apache找到它

将Django工程放在/var/www/下:
sudo vi /etc/apache2/sites-available/yoursite.conf 修改配置文件;
sudo a2ensite yoursite.conf 配置文件生效;
sudo service apache2 restart 重启Apache。

Apache默认的网站目录是/var/www/。通常来说,如果你只是自己搭着玩玩也没有必要更改这个目录,直接就将你的Django工程文件夹放在这就行了。

如果你想要放在别处的话,可以通过修改/etc/apache2/apache2.conf中的,将其改为,不过配套的你需要修改其权限。具体的修改方法这里。

以上只是完成了为Django安家这一步,但是我们还需要让Apache找到Django(方便查水表)。

新建一个网站配置文件:

sudo vi /etc/apache2/sites-available/yoursite.conf。

这里边包含了你所有的网站配置信息,包括Apache如何查找静态文件(js/css/images),网站上传的文件存在哪里,最重要的,包含了Apache识别Django的wsgi文件。
#
ServerName www.yourdomain.com
#ServerAlias otherdomain.com
#ServerAdmin youremail@gmail.com

# 存放用户上传图片等文件的位置,注意去掉#号
#Alias /media/ /var/www/ProjectName/media/

# 静态文件(js/css/images)的存放位置
Alias /static/ /var/www/ProjectName/static/

# 允许通过网络获取static的内容

Require all granted

# 最重要的!通过wsgi.py让Apache识别这是一个Django工程,别漏掉前边的 /
WSGIScriptAlias / /var/www/ProjectName/ProjectName/wsgi.py
# wsgi.py文件的父级目录,第一个ProjectName为Django工程目录,第二个ProjectName为Django自建的与工程同名的目录


Require all granted

通过修改上面的文件,你就可以让Apache找到你的Django工程,上边可以修改的内容包括:

80:修改80为其他数字,可以更改你的端口号,国内的电信貌似把80端口给封了(如果你的域名没有备案的话)。注意,还要修改/etc/apache2/port.conf文件中的Listen *port*。
ServerName:后边改成你自己的域名,如果没有的话就用IP代替。注意,如果改成了域名,还需要修改Django工程下的seeting.py文件,将其ALLOWED_HOSTS=[]改为ALLOWED_HOSTS=[‘www.yourdomain.com’],多个域名可以通过逗号隔开。
ServerAlias:你的其他域名或IP。

最后要让这个配置文件生效,你需要运行

sudo a2ensite yoursite.conf

有时候,你可能需要让它失效(因为你将yoursite.conf改名为其他名字?),可以运行

sudo a2dissite yoursite.conf

做完以上步骤,Apache会提醒你要执行sudo service apache2 relaod,这条命令主要是你手动命令Apache根据你刚才配置的yoursite.conf去寻找Django工程,当然我一般都是restart,如果你的Apache不为其他的网站提供服务,那么你也restart吧,因为重启大法好!

每次你修改Django工程文件之后,都要restart一下,它才会生效。

4.修改Django的wsgi.py文件

修改上面说的/var/www/ProjectName/ProjectName/wsgi.py为如下格式

import os
from os.path import join,dirname,abspath
PROJECT_DIR = dirname(dirname(abspath(__file__)))

import sys
sys.path.insert(0,PROJECT_DIR)
os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “examsys.settings”)

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

这个配置文件的作用也是让Apache找到Djanog,毕竟不能一厢情愿吗,Apache同意和Django“交往”了,但是万一人家Django不乐意呢?
最后,还记得我说的嘛?

每次你修改Django工程文件之后,都要restart一下,它才会生效。

5.调试错误

如果你的网站没有加载静态文件(js/css/images),请检查你的静态文件是不是在ProjectName/static下,而不是在ProjectName/AppName/static下(改这里边的文件是不用重启Apache的)。
不知道啥问题,就是不管用,请查看Apache的错误文档。
cat /var/log/apache2/error.log
No module named xxxx。首先检查一下你所依赖的库是否安装全了,没有的话就pip install。
No module named django或者其他含django的错误。这说明你的环境搭错了。往上翻error.log,找到AH00489开头的错误,看看你到底用的是什么环境。一般都是你第二步Apache的Python解释器安装错误。

以上皆参考涂伟忠老师的自强学堂,我自己搭建Django+Apache2时的心得,如果还不明白,可以去自强学堂看看。

【参考】

参考:https://code.ziqiangxuetang.com/django/django-deploy.html
参考:http://www.runoob.com/django/django-install.html
参考:http://106.15.37.116/2018/05/31/linux-centos-%e5%ae%89%e8%a3%85django/
参考:http://106.15.37.116/2018/06/02/django-%e5%8d%9a%e5%ae%a2%e5%bc%80%e5%8f%91%ef%bc%9a%e7%8e%af%e5%a2%83%e9%85%8d%e7%bd%ae/
参考:http://www.cnblogs.com/fnng/p/3737964.html
参考:https://qiita.com/yusukeasari/items/46c08e36dd4fea65a893
参考:https://qiita.com/ngc224/items/85d82fdfe4e664e53b7e
参考:https://www.jianshu.com/p/b40a4a12fff1
参考:http://www.cnblogs.com/oubo/archive/2012/04/06/2434961.html

参考:https://www.jianshu.com/p/6199b5c26725
参考:https://imshusheng.com/python/216.html