Python实现404页面识别实践

“你说我虽然是个普通人,我也想人家关注我啊,我也想有女孩喜欢我啊,我也想有什么东西可以吹牛啊......总不能因为我没本事很普通,就当一辈子的路人甲吧?那有什么意思啊?可在家里我真的是什么都没有,”他摊了摊手,“什么都没有......我饿了,你有没有什么吃的?”

阅读提要

全文约4.8K字,大致阅读完约6分钟,包含主要知识点:HTTP状态码网页跳转方式404错误页面种类定制型网址404识别通用型404页面识别,其中关键部位文字使用橙色重点标注,网址使用绿色重点标注,具体代码结果保存在文末。

目录:

  • 状态码信息

  • 页面跳转方式

  • 404页面种类

  • 针对单一网址404页面识别

  • 针对通用型网址404页面识别

状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

HTTP状态码的英文为HTTP Status Code。

下面是常见的HTTP状态码:

200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误

 

如下图所示就是请求一个错误页面返回的请求头信息,其中状态码为304。

 

 

状态码都会在请求头中显示,本文中重点探讨在渗透测试的信息收集中对网址进行扫描中遇到的404页面自动识别的解决方案。

页面跳转

当访问一个不存在的网页时,服务器默认会进行自动跳转到其他网页或者返回不存在页面,按照经验URL跳转方式可以分成两种,第一种是服务端设置好后的客户端跳转,第二种是经过服务端处理后进行的跳转。最后就是默认的错误页面信息了,下面三种都是不存在的错误页面信息,但是返回的状态码都是不一样的,需要结合在一起分析处理。

第一种客户端浏览器自动跳转,默认返回的状态码是301或者302,然后由经过设置好的规则开始跳转到下一个页面,这种方式使用代码识别比较简单。

第二种服务端对请求进行处理分析后跳转,是由服务器进行处理请求后,服务端发现页面不存在,但是还是给你返回200状态码然后给你跳转到正常页面,将结果从后端发送给前端,获取的状态码是200,该种方式使用代码进行识别难度稍大。

第三种默认的方式是如果网页不存在,则会自动返回404状态码和相关错误界面。

404页面种类

URL的404页面的识别,按照经验有如下几种情况

  1. 直接返回错误页面,请求头中显示404状态码。

  2. 将错误页面重定向到一个新的页面,重定向方式是上面说的两种,请求头中显示301,302状态码。

  3. 程序员在后端代码中,将错误页面的状态码设置成200的错误页面,然后直接返回到前端,请求头状态码为200。

  4. 程序员在后端代码中,将错误页面的请求直接从后端自动重定向到首页,同上。

常见的情况大概这么多,尝试使用python实现对404页面的检测识别,这里还可以分成两类代码,第一类是通用型的,即可以对不同的网址识别404页面,通用性大更加方便,同时难度和容错率也相对提高。第二种则是专门对某个网址进行单独的检测,这种定制化的相对简单,首先分析该网站的返回状态码,返回的错误页面,是否跳转信息,就可以判断是否为404页面。

定制型404页面识别

识别404分通用型与制定型,制定型即对特定的指定的一个网站进行目录扫描,单独写一个程序代码进行识别。这个比较容易,但是这里存在一个问题,即你扫描网站的目录结果还是扫描网站的文件,如果扫描网站的文件,那么适用上面的规则,如果

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浪子燕青啦啦啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值