Python爬虫——爬取 url 采集器
原创
©著作权归作者所有:来自51CTO博客作者amingMM的原创作品,请联系作者获取转载授权,否则将追究法律责任
url采集器
0x01 前言
0x02 ZoomEyeAPI脚本编写
- ZoomEye是一款针对网络空间的搜索引擎
- 收录了互联网空间中的设备、网站及其使用的服务或组件等信息。
ZoomEye 拥有两大探测引擎:Xmap 和 Wmap
分别针对网络空间中的设备及网站,
通过 24 小时不间断的探测、识别,标识出互联网设备及网站所使用的服务及组件。 - 研究人员可以通过 ZoomEye 方便的了解组件的普及率及漏洞的危害范围等信息。
- 虽然被称为 “黑客友好” 的搜索引擎,
- 但 ZoomEye 并不会主动对网络设备、网站发起攻击,收录的数据也仅用于安全研究。
- ZoomEye更像是互联网空间的一张航海图。

- API 文档

先登录,然后获取access_token




user = raw_input('[-] PLEASE INPUT YOUR USERNAME:')
passwd = raw_input('[-] PLEASE INPUT YOUR PASSWORD:')def Login():
data_info = {'username' : user,'password' : passwd}
data_encoded = json.dumps(data_info)
respond = requests.post(url = 'https://api.zoomeye.org/user/login',data = data_encoded)
try:
r_decoded = json.loads(respond.text)
access_token = r_decoded['access_token']
except KeyError:
return '[-] INFO : USERNAME OR PASSWORD IS WRONG, PLEASE TRY AGAIN'
return access_token
if __name__ == '__main__':
print Login()

def search():
headers = {'Authorization': 'JWT ' + Login()}
r = requests.get(url = 'https://api.zoomeye.org/host/search?query=tomcat&page=1',
headers = headers)
response = json.loads(r.text)
print(response)
if __name__ == '__main__':
search()

JSON数据,
我们可以取出IP部分…
print(response)
for x in response['matches']:
print(x['ip'])

HOST的单页面采集
接下来,就是用FOR循环…获取多页的IP
#-*- coding: UTF-8 -*-
import requests
import json
from click._compat import raw_input
def Login():
data_info = {'username' : user,'password' : passwd}
data_encoded = json.dumps(data_info)
respond = requests.post(url = 'https://api.zoomeye.org/user/login',data = data_encoded)
try:
r_decoded = json.loads(respond.text)
access_token = r_decoded['access_token']
except KeyError:
return '[-] INFO : USERNAME OR PASSWORD IS WRONG, PLEASE TRY AGAIN'
return access_token
def search():
headers = {'Authorization': 'JWT ' + Login()}
for i in range(1, int(PAGECOUNT)):
r = requests.get(url='https://api.zoomeye.org/host/search?query=tomcat&page=' + str(i),
headers=headers)
response = json.loads(r.text)
print(response)
for x in response['matches']:
print(x['ip'])
if __name__ == '__main__':
user = raw_input('[-] PLEASE INPUT YOUR USERNAME:')
passwd = raw_input('[-] PLEASE INPUT YOUR PASSWORD:')
PAGECOUNT = raw_input('[-] PLEASE INPUT YOUR SEARCH_PAGE_COUNT(eg:10):')
search()
这样就取出了你想要的页码的数据,然后就是完善+美观代码了…
#-*- coding: UTF-8 -*-
import requests
import json
from click._compat import raw_input
def Login(user,passwd):
data_info = {'username' : user,'password' : passwd}
data_encoded = json.dumps(data_info)
respond = requests.post(url = 'https://api.zoomeye.org/user/login',data = data_encoded)
try:
r_decoded = json.loads(respond.text)
access_token = r_decoded['access_token']
except KeyError:
return '[-] INFO : USERNAME OR PASSWORD IS WRONG, PLEASE TRY AGAIN'
return access_token
def search(queryType,queryStr,PAGECOUNT,user,passwd):
headers = {'Authorization': 'JWT ' + Login(user,passwd)}
for i in range(1, int(PAGECOUNT)):
r = requests.get(url='https://api.zoomeye.org/'+ queryType +'/search?query='+queryStr+'&page='+ str(i),
headers=headers)
response = json.loads(r.text)
try:
if queryType == "host":
for x in response['matches']:
print(x['ip'])
if queryType == "web":
for x in response['matches']:
print(x['ip'][0])
except KeyError:
print("[ERROR] No hosts found")
def main():
print (" _____ _____ ____ " )
print ("|__ /___ ___ _ __ ___ | ____| _ ___/ ___| ___ __ _ _ __" )
print (" / // _ \ / _ \| '_ ` _ \| _|| | | |/ _ \___ \ / __/ _` | '_ \ ")
print (" / /| (_) | (_) | | | | | | |__| |_| | __/___) | (_| (_| | | | |")
print ("/____\___/ \___/|_| |_| |_|_____\__, |\___|____/ \___\__,_|_| |_|")
print (" |___/ ")
user = raw_input('[-] PLEASE INPUT YOUR USERNAME:')
passwd = raw_input('[-] PLEASE INPUT YOUR PASSWORD:')
PAGECOUNT = raw_input('[-] PLEASE INPUT YOUR SEARCH_PAGE_COUNT(eg:10):')
queryType = raw_input('[-] PLEASE INPUT YOUR SEARCH_TYPE(eg:web/host):')
queryStr = raw_input('[-] PLEASE INPUT YOUR KEYWORD(eg:tomcat):')
Login(user,passwd)
search(queryType,queryStr,PAGECOUNT,user,passwd)
if __name__ == '__main__':
main()


0x03 ShoDanAPI脚本编写

Shodan是互联网上最可怕的搜索引擎。
CNNMoney的一篇文章写道,
虽然目前人们都认为谷歌是最强劲的搜索引擎,
但Shodan才是互联网上最可怕的搜索引擎。
与谷歌不同的是,Shodan不是在网上搜索网址,
而是直接进入互联网的背后通道。
Shodan可以说是一款“黑暗”谷歌,
一刻不停的在寻找着所有和互联网关联的服务器、摄像头、打印机、路由器等等。
每个月Shodan都会在大约5亿个服务器上日夜不停地搜集信息。
Shodan所搜集到的信息是极其惊人的。
凡是链接到互联网的红绿灯、安全摄像头、家庭自动化设备以及加热系统等等都会被轻易的搜索到。
Shodan的使用者曾发现过一个水上公园的控制系统,一个加油站,甚至一个酒店的葡萄酒冷却器。
而网站的研究者也曾使用Shodan定位到了核电站的指挥和控制系统及一个粒子回旋加速器。
Shodan真正值得注意的能力就是能找到几乎所有和互联网相关联的东西。
而Shodan真正的可怕之处就是这些设备几乎都没有安装安全防御措施,其可以随意进入。
0x04 简易BaiduURL采集脚本编写
0x05 【彩蛋篇】论坛自动签到脚本
