我不想攻击别人,但我更不想被别人攻击。于是乎安全扫描变得格外重要,如此才能防患于未然,xsscrapy 就是这样一个漏洞检测工具。
既然这个工具是用 Python 写的,那么理论上安装应该是一件非常简单的事情:
代码语言:javascript复制shell> git clone https://github.com/DanMcInerney/xsscrapy
shell> cd xsscrapy
shell> pip install -r requirements.txt
不过我的服务器运行的操作系统是 CentOS 5.4 ,搭配的环境是 Python 2.4 ,于是整个过程变得异常坎坷,实际上我花了一天的时间才摸索成功,本文记录一下过程:
因为 Python 版本比较旧,所以在动手之前先安装新版 Python ,这没有什么可说的,不过需要提醒的一点是,要确保包含如下开发包,否则 Python 不可用:
代码语言:javascript复制shell> yum install openssl-devel bzip2-devel zlib-devel
环境准备好了之后,在安装 xsscrapy 依赖的 lxml 时,出现错误:
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe2 in position …: ordinal not in range(128)
看上去似乎是编码问题,但实际上是缺少了依赖的开发包所致:
代码语言:javascript复制shell> yum install libxslt-devel libxml2-devel
这还不算完,又遇到如下错误信息:
TypeError: sequence item 0: expected string, int found
网上搜索了一下,发现别人说是 lxml 3.4.0 的 BUG ,于是装了个旧版:
代码语言:javascript复制shell> pip install lxml==3.3.6
刚解决了 lxml 的问题,结果按下葫芦起了瓢, cryptography 报错:
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe2 in position …: ordinal not in range(128)
有了前面的经验,没有被错误信息误导,沿着日志往前面捋,发现真正的原因:
No package ‘libffi’ found
安装对应的 devel 开发包:
代码语言:javascript复制shell> yum install libffi-devel
这还不算完,又遇到如下错误信息:
AttributeError: ‘FFILibrary’ object has no attribute ‘SSL_OP_NO_TICKET’
说起来,这是旧版 pyopenssl 的问题,按照官方补丁改了改,终于成功了。