麻烦在python中使用请求库

时间:2014-01-20 08:46:13

标签: python security

我正在尝试针对使用robots.txt创建的列表检查活动网站文件夹(这是为了学习安全性,我在我拥有和控制的服务器上执行此操作)。我在Kali Linux上使用Python 2.7。

如果我一次只做一个网址,我的代码就可以工作,因为我对分别处于活动状态和不工作的文件夹的响应分别为200或404。

当我针对整个列表尝试此操作时,我收到一串404错误。当我打印出脚本正在创建的实际地址时,一切看起来都是正确的。

这是我正在做的代码:

import requests
attempt = open('info.txt', 'r')
folders = attempt.readlines()

for line in folders:
    host = 'http://10.0.1.66/mutillidae'+line
    attempt = requests.get(host)
    print attempt

这导致一串404错误。如果我取出循环,并单独尝试每个循环,我会得到200响应,表明它已启动并运行。

我还使用相同的循环打印出包含正确文件夹的文本文件的地址,地址似乎很好,我通过复制和粘贴验证。我尝试使用包含多个文件夹和列出的单个文件夹的文件,并在尝试从文件中读取时始终获得404.

info.txt文件包含以下内容:

/passwords/
/classes/
/javascript/
/config
/owasp-esapi-php/
/documentation/

感谢任何建议。

1 个答案:

答案 0 :(得分:2)

file.readlines()返回的行包含尾随换行符,在将它们传递给requests.get之前必须将其删除。替换声明:

host = 'http://10.0.1.66/mutillidae'+line

使用:

host = 'http://10.0.1.66/mutillidae' + line.rstrip()

问题就会消失。

请注意,如果您为了不同的目的而避免使用相同的通用变量名称(如attempt),则所有代码都会更容易阅读。此外,应该尝试使用反映其用法的变量名称 - 例如,host将更好地命名为url,因为它不包含主机名,而是整个URL。