查找网站下的所有链接
我该如何找到一个网站下的所有目录和链接呢?注意,主页上并没有指向其他页面的链接。比如说,如果我有一个域名是 users.company.com,每个用户会有一个链接,比如 users.company.com/john,users.company.com/peter 等等。但是我不知道有多少用户,也不知道所有的链接是什么,我想通过暴力破解的方式来检查所有链接。如果我想写一个 Python 脚本来完成这个工作,我可以在哪里找到相关的信息来用 Python 开发呢?
3 个回答
与其先写一个Python脚本,不如直接使用一些第三方工具来完成这个任务。
1) 第一步是创建目标网站的镜像,然后再进行解析。你可以使用命令“wget -mk http://www.targetwebsite.com”来创建目标网站的镜像。
http://www.gnu.org/software/wget/
然后你可以用Python来解析这个镜像的代码。
2) 谷歌搜索技巧(Google dorking)
示例查询:
site:stackoverflow.com
site:stackoverflow.com intitle:"index of"
site:stackoverflow.com ext:html ext:php
对于没有robots.txt文件的路径,这种方法是有效的。
看看这个叫做'mechanize'的Python模块。它非常好用。
这些页面对我帮助很大,是获取信息的好地方:
http://stockrt.github.com/p/emulating-a-browser-in-python-with-mechanize/ https://scraperwiki.com/views/python_mechanize_cheat_sheet/edit/
为了让你了解'mechanize'能做些什么,这里有一个简单的函数,可以列出给定网址的所有链接:
import mechanize
def test():
headers = ('User-Agent','Mozilla/4.0')
url = 'http://www.google.com'
browser = mechanize.Browser()
browser.addheaders=[headers]
response = browser.open(url)
for link in browser.links():
print link
if __name__ == '__main__':
test()
因为你的网站首页没有链接指向其他页面,所以你现在只有首页的URL和用来访问用户的URL格式。
我能想到的唯一办法就是使用一个名字的字典,或者生成所有可能的字符串组合,长度要有限。然后逐个访问这些组合。
你可以看看这个链接:http://docs.python.org/2/library/urllib.html,了解如何创建HTTP请求或打开网址。
接着,写一个循环,遍历所有的名字或字符串组合,并调用这些网址。
你还可以考虑同时进行这些操作,这样应该比较简单:http://en.wikipedia.org/wiki/Embarrassingly_parallel