python爬虫数据库污染
没记错是半年多前写的一个爬虫脚本了,日期记得不太准确就随便填了一个大概日期,近来无聊乘机把博客完善一下。
工作原理是不断的模拟用户注册从而污染数据库。
前言
前置条件
- python3
- 需要用到python的模块(库)
- requests
- chrome浏览器
实现思路
- 利用浏览器的开发者工具查看后端接口
- 分析后端接口
- 利用random库随机生成字符做用户名和密码
- 利用爬虫进行数据提交
详细步骤
初次尝试
浏览器接口分析
具体方法就不赘述了,大致就network里面找。找到表单请求的接口就好了。
其实是太麻烦了,懒得码字了2333…..
构建随机字符串
利用random()
函数从0-9、a-z、A-Z中随机生成网页规则要求的字符串
这里我用了一个比较笨的方法、当时刚学….见谅QAQ!
1 | import random |
爬虫提交数据
通过查看接口,我们得知要提交的表单内容,构造一下内容即可。
然后把表单通过requests.post()
函数进行提交。
1 | # 提交的表单内容 |
打印提交信息
此时,我们并不知道是否提交成功了,如果网站设置了某些规则,很可能会拦截我们的爬虫。
所以我们打印一下提交的信息。
1 | # 显示提交信息 |
分析结果
因为这是我同学私人的网站,所以安全措施并不高。初次提交时成功了,但我和他说了后他马上就做了修改。
修改过后可以看到,我们第一次尝试的代码返回了错误码(这里是因为我忘了哪个错误吗233)
错误原因分析
- 一般网站都会检查user_agent,因此我们把user_agent添加一下。
- 除了user_agent,不排除会有其他地方的坑。
解决思路
- 对经常验证的项进行伪装,并且查看有没有它单独定义的项。
- 把整个头文件都复制进去。
再次出发
根据上面的解决思路,我发现它的Referer项有点奇怪,作为一个好奇宝宝,填进去尝试一下。
其实这里我尝试了很多个才发现… :smile::smile:
完善一下代码,如下。
1 | import requests |
查看结果
我们看到返回的状态码时200,并且网页内容时正常的。所以我们成功的注册了一个僵尸账号。
整个数据库污染就到此结束了
总结
- 与传统的刷题刷代码量相比,造一些小玩具、轮子更生动有趣
- 这个脚本并没有设置ip地址池进行代理
- 网站管理员可以通过IP来进行批量操作
- 网站后端也可能会设置访问闸值,单个ip容易给封。
- 搭配以前写的ip地址池代理,既可以解决上面的问题。
——本文结束您的阅读与肯定是我持续装*的最大动力——