使用Python实现自动化抓取浏览器内容、提交结果

本文只对原理和过程进行文字描述,详细例子与图片描述参照下面给出的链接,结合CTF题目对这个过程实际分析。
实例:
http://blog.csdn.net/funkypants/article/details/78198215
http://blog.csdn.net/funkypants/article/details/78275717

所需知识:

Python3.+使用、requests库、BeautifulSoup4库(或re库)

流程:

1.抓取内容

首先,使用requests库抓取目标网页内容到内存中,语法如下:

import requests
get_url = ‘’#输入目标网址
session = requests.session()#建立一个requests的会话对象
html = session.get(get_url).content#使用上面建立的对象去打开网页,并获取html文档内容

使用print(html)即可看到目标网页的的html文本。

2.解析网页

接下来,我们使用Python中的BeautifulSoup库去解析获得我们想要的内容,只需短短几行语句加上一点耐心,再复杂的内容也可以分解出来。BeautifulSoup这个库采取解析html文档树的方法去获得特定标签、css属性对应的内容,特点是语法简单,入门的话建议直接去阅读它的官方文档(也有中文版),预计1小时内可以简单使用BeautifulSoup去解析网页内容。
如果正则表达式基础比较熟练的话,可以直接使用re(正则表达式)去匹配获得我们想要的内容,也比较方便。

3.计算处理数据

在实际使用中,最重要的一步是对获得的内容进行处理,为下一步的自动提交做准备,这一部分需要结合实际情况去分析,略过。
详细例子参考文末链接。

4.自动化

最后,需要自动提交数据,这一步可以分为两种情况。一种是使用GET方法传递参数,对这种情况,我们只需对字符串进行拼接,然后同样使用第一步中的方法访问url、打印返回数据。
第二种情况是使用POST方法传递参数,在这种情况中,我们需要构造payload,即需要提交的变量名称与对应的值的键值对,形如{‘变量名’:’值’}。需要使用BurpSuite抓包、或分析html中提交按钮的属性才能知道变量名是什么。使用以下语句去构造payload并提交

post_url = ‘’#使用BurpSuite抓包查看post数据提交的url
payload = {'pass_key':str(num)}#键值对
post = session.post(post_url, payload)#依然使用上面建立连接时的会话去提交数据
print(post.text)

使用print语句可以把网页的返回结果直接打印出来。

    原文作者:FunkyPants
    原文地址: https://blog.csdn.net/FunkyPants/article/details/78278220
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞