分析自动打卡脚本——大一入学遗作

HTTP协议

1.何为HTTP协议

HTTP协议又名超文本传输协议,是一种基于TCP/IP的传输协议,顾名思义,其传输的内容为超文本内容,在互联网早期,我们只能传输非二进制的文本,邮件间相互的来往也不能像现在一样插入文档、视频、音频等二进制内容,网页内也无法拥有现在我们可以看到的视频、图片等,于是便有了超文本传输协议,一种可以传输超越文本的内容的协议。

HTTP协议是规定浏览器与服务器之间交互的一种协议,其他常见的协议还有FTP协议,规定两台电脑间传送文件所要遵守的协议,事实上,有许许多多的人们基于TCP/IP协议发明了许多不同的协议,甚至有人已经解决TCP/IP协议的弊端,但却并没有流行起来,可见TCP/IP应用范围之广。

2.HTTP协议都包括什么


    Name:

上述是一个非常简单的HTML表单,通过链接同级目录下一个叫做DataBase.php的php文件将表单内容以POST方法传输到php文件中。php文件则可以利用$_POST方法进行表单内容的获取。

何为表单:

表单是收集信息的一种工具,在HTML语法中使用”form”标签来实现,举个十分简单的例子,当你在注册你的游戏账号时,你将会在指定的输入框(input)内输入符合内容的信息,并且还会有一套检测机制检测你输入的内容究竟是否符合要求(正则表达式),最终当你点击提交按钮后,会提示你账号注册成功,而你的信息就会被发送到指定的数据库,拿上述的PHP举例,信息并不是直接通过所谓”INSERT INTO”语句进行了插入,而是通过连接了一个PHP文件,PHP文件中使用不同类型的方法连接到了指定数据库,执行指定的语句,最终完成将信息插入的过程。

何为POST方法

HTTP协议是一种规定服务器与浏览器进行交互的协议,既然交互那就要有各式各样的方法,人们为HTTP协议规定有如下请求方法:

1.GET
2.POST
3.SEND
4.HEAD
5.TRACE
……

最常用的是POST、GET。

POST和GET都可以理解为想服务器发送了信息,但两种方法其实有很大不同,例如POST方法会比GET方法略微安全一些,URL中不会直接显示所提交的内容。

当你点击提交的按钮时,其实浏览器就向服务器发送了一个POST请求,服务器收到POST请求后与浏览器进行验证,通过后将你的信息录入库中,之后你在登陆账号时,就会从客户端(浏览器)向服务端(服务器)发送一个请求,服务器向数据库请求,数据库查询到你的最新密码,与你所输入的内容进行匹配,最后验证是否相同,相同则登陆成功,不相同则登陆失败。

分析自动打卡脚本——大一入学遗作

CGI是一种浏览器与你的服务器之间交互的程序,一般负责用来解释来自表单的信息,必须在网络服务器上进行运行。

HTTP状态码

当你在访问一些页面时,可能会遇到一些不知意义的数字,伴随而来的是网页的无法正常显示,最常见的应该就是404了、其次可能还有502、503、500等,这些数字其实就是人们按照一定规则所设置的HTTP状态码,用于向人们反馈到底你所请求的是个什么状态。

比如当你看到404时,后面会跟随着”Not Found”,这代表404这个状态码翻译过来就是找不到的意思,服务器无法根据你客户端的请求找到资源。一个网站的404网页是必须要创建的,这有着十分重大的意义。

502 Bad Gateway,当时体育课抢课时,报错的代码就是502和404,502则代表网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应。

又比如403 Forbidden,顾名思义,就是服务端阻止了你的请求,拒绝了你。

500 Internal Server Error 服务器内部错误,无法完成请求。

上述代码都是错误的,有问题的,肯定是人们不想看到的,那人们想看到什么样子的呢,例如200,人们就非常喜欢看到。

200代表OK,一般来说用于GET和POST请求,也就是说一切安然无恙,执行的井然有序后你就会看到200的状态码,但一般情况下你是看不到的,直接就正常浏览网页了,但是你还是要知道当你正常浏览网页时,其实状态码是200.

状态码有将近二十来种,人们是怎么记住他们的呢,实际上是有分类标准的:

状态码都是三位数字,人们按照开头的第一个数字进行划分。

例如1开头的状态码就代表信息,服务器收到请求,需要请求者继续执行一个什么操作

2开头就代表成功,也是人们最喜欢看到的一类状态码

3开头就代表重定向,比如一些网站会做一个301跳转,一些用户仍然喜欢用www加在域名前进行网站的访问,为了避免不必要的麻烦,网站所有者会为这些网址做一个重定向跳转,帮助用户跳转到正确的页面。

4开头就代表客户端错误,5开头则代表服务端错误,这些都是人们不想看到的状态码。

3.学习了HTTP协议,我能获得什么

如果我们要聊你能获得什么的话题,首先我们要分类讨论一下。

如果你比较喜欢研究算法,或者说你对计算机的了解仅仅只是算法一词,我要学一门效率极高的语言用天才程序员想出的效率极高的算法,那么我很抱歉的说一句,你学习HTTP协议可能并不能为你带来什么,而且可能你在后来学习数据结构时,也不觉得能带来什么,其实这些类比都有失妥当,比如HTTP协议其实根本就不是什么晦涩难懂的东西,他就是个协议而已,我甚至觉得学习它比你花几个小时学习一门新语言的语法还要快就可以解决,你只需要看,了解,记住。但是其实HTTP协议不能为你带来什么引起质变的东西,但我还是希望你可以试着学一学,技多不压身吗,何况连算法都不在话下,HTTP协议也不是问题了。

如果你对计算机很感兴趣,觉得方方面面都很想学习,那我觉得你学习HTTP协议应该会兴奋,我自认为HTTP协议、TCP/IP协议这些前人已经深思熟虑制定好的规则是非常值得我们学习的,就好像数据结构、计算机组成原理、操作系统这些东西一样,你学完以后真的就能写出来操作系统,真的就可以用struct实现一个媲美人家已经写好的数组的功能吗?难道灵光一闪就能够想出和雷神之锤那种平方根倒数速算法一样的上帝算法吗?这当然不能,但意义在于你终于更加明白计算机的美丽之处,以及你所日常使用的东西其实都复杂无比,充满着人类的智慧,这还不够令人兴奋吗?

4.说了很多废话,HTTP协议到底能干些什么

其实HTTP协议什么也不能干,他根本就不是个工具,他只是个协议,试问我们能让法律去判决哪个人该受什么样的刑罚吗?肯定不行。

都是法官在依据法律执行罢了,HTTP协议也是如此,你现在已经知道了一套体系的运行规则,你当然就可以利用它。

5.举例

举个例子。

当你打开一个软件,在转圈加载时,就相当于你客户端已经在向服务端开始请求了,开始拉取信息。

服务端返回后,出现了许许多多的等待你使用的功能。

分析自动打卡脚本——大一入学遗作

比如一个下面图片里的功能,填写许多信息,聪明人都能理解到了,这不就相当于我注册游戏账号吗,我填写对方要的信息,然后我把我的信息填到一个类似于表格的地方里,最后点击提交按钮交上去,然后他就告诉我我填的是否符合要求,成功了还是失败了。

分析自动打卡脚本——大一入学遗作

这不就是个submit吗。

分析自动打卡脚本——大一入学遗作

好了,如果你真的读懂了,那么你现在应该就能联想到一套操作,我觉得稍微懂的都已经懂了。

如果我可以有一台服务器,服务器上面可以定时部署一个任务,就类似于开游戏服务器时我写了一个sh脚本,每天凌晨都要给服务端备份,以免有一天游戏炸掉,我可以回档及时止损。但是现在不是什么备份止损,我们好像可以模拟一套HTTP请求,然后把脚本部署在服务端,实现远端执行。

分析自动打卡脚本——大一入学遗作

我们转换为代码其实就十分简单,短短40行就可以实现我们理想中的功能。

首先我们import进来我们需要的模块,既然要模拟一套请求,那肯定要requests来模拟一套请求流程,中间的JSON利用json来编码。

调用sender方法,我们可以轻松实现功能,把我们所需要的信息用抓包工具实现,抓包同样是一个很好玩的东西,很多网游其实都可以利用WPE抓包实现一些作弊功能,但这要说就扯得太远了,总之我们抓包是为了知道我们每次都给服务端提供了什么样的信息出去,我们既然要模拟,就要把这些东西填进去,对方才知道是我们。

url就是要向对方服务端目录下的何处进行请求。

cookies也是一个很有意思的东西,既然有很多用户都在使用一个功能,那么到底如何分辨谁是谁呢?于是乎每个用户都有一个专属于他的cookie,你的浏览器也会记录你的cookie,这就是所谓你在一些网站登陆过账号后,过几天再登陆,惊奇的发现竟然账号已经登陆了。

下面是个重头戏,关于HTTP headers。

HTTP headers是HTTP请求和响应的核心,一般来说它包含着客户端浏览器、请求页面、服务器相关的信息。

当你在浏览器中输入了一个url时,你的浏览器通常会有如下的http请求

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1
Host: net.tutsplus.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120Pragma: no-cacheCache-Control: no-cache

第一行被称作是Request Line,它描述请求的基本信息,剩下的部分就是HTTP headers了。

当请求完毕后,会有下面的内容:

HTTP/1.x 200 OK
Transfer-Encoding: chunkedDate: Sat, 28 Nov 2009 04:36:25
GMTServer: LiteSpeedConnection: closeX-Powered-By: W3 Total Cache/0.8Pragma: publicExpires: Sat, 28 Nov 2009 05:36:25 GMTEtag: "pub1259380237;gz"Cache-Control: max-age=3600, public
Content-Type: text/html; charset=UTF-8
Last-Modified: Sat, 28 Nov 2009 03:50:37
 GMTX-Pingback: http://net.tutsplus.com/xmlrpc.php
Content-Encoding: gzipVary:
 Accept-Encoding,
 Cookie, User-Agent

Original: https://www.cnblogs.com/appletree24/p/16734268.html
Author: Appletree24
Title: 分析自动打卡脚本——大一入学遗作

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/685413/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 杂想闲思录——你的努力付出可能毫无价值可言!

    公司的清洁阿姨每隔一段时间就会换一个。个人上班一般来的比较早,所以经常会碰到清洁阿姨在办公室打扫卫生:有些阿姨工作比较敷衍,草草了事,完全是那种拿多少薪水干多少活的类型,完全看不到…

    技术杂谈 2023年5月31日
    0115
  • Eureka

    一 什么是SpringCloud? Author:呆萌老师 QQ:2398779723 微信:it_daimeng Spring Cloud是&#x4…

    技术杂谈 2023年7月24日
    079
  • Mysql索引(究极无敌细节版)

    参考了: https://www.jianshu.com/p/ace3cd6526c4 &a…

    技术杂谈 2023年7月25日
    071
  • 【软考】软件架构

    1.软件架构风格 1.1 数据流风格 1.2 调用/返回风格 1.3 独立构件风格 1.4 虚拟机风格 1.5 仓库风格 2.相关考题 1.软件架构风格 软件架构分为以下几种风格:…

    技术杂谈 2023年5月31日
    0101
  • 017 Linux 之啥是 ssh ?

    1 什么是 ssh?有什么用? (1)ssh 是一种协议 (2)ssh 服务 2 ssh 基于密匙的安全验证过程是怎样的? 3 对称加密与非对称加密区别是什么? (1)对称加密 (…

    技术杂谈 2023年7月10日
    0131
  • 部署-jenkins发布项目到linux环境

    使用openSSH的方式 如果jenkins跟服务器不在同一台服务器上,这时候我们可以借助ssh的方式将打包好的jar包发送到远程服务器,然后以后台的方式运行程序。 安装publi…

    技术杂谈 2023年7月23日
    073
  • 《Hyperspectral Image Transformer Classification Networks》论文笔记

    1. SACP Module:SACP使用两个光谱自适应三维卷积层构建,如下图所示,其中包括两个分支:局部空间分支L和全局光谱分支G。局部空间分支旨在学习空间位置敏感的重要图,全局…

    技术杂谈 2023年6月21日
    0113
  • Golang:将日志以Json格式输出到Kafka

    工程实践中,我们往往还需要对日志进行采集,将日志归集到一起,然后用于各种处理分析,比如生产环境上的错误分析、异常告警等等。在日志消息系统领域,Kafka久负盛名,这篇文章就以将日志…

    技术杂谈 2023年7月11日
    091
  • 词表示

    在NLP领域,自然语言通常是指以文本的形式存在,但是计算无法对这些文本数据进行计算,通常需要将这些文本数据转换为一系列的数值进行计算。那么具体怎么做的呢?这里就用到词向量的概念。 …

    技术杂谈 2023年7月11日
    081
  • 天池学习赛–贷款违约预测

    贷款违约预测 赛题以金融风控中的个人信贷为背景,要求选手根据贷款申请人的数据信息预测其是否有违约的可能,以此判断是否通过此项贷款,这是一个典型的分类问题。通过这道赛题来引导大家了解…

    技术杂谈 2023年7月23日
    094
  • 领域驱动设计框架Axon实践-InfoQ

    spring statemachine activiti – 搜索https://cn.bing.com/search?q=spring+statemachine+ac…

    技术杂谈 2023年6月1日
    0101
  • 进程内存分布

    来自:https://www.bilibili.com/video/BV1mK4y1H7JL/ Original: https://www.cnblogs.com/qiumingc…

    技术杂谈 2023年6月1日
    090
  • 基于DMS的数仓智能运维服务,知多少?

    摘要:GaussDB(DWS)使用DMS来承载数据库的智能运维体系,提供了数据库运维过程中的监控,分析,处理三大核心处理过程。 GaussDB(DWS)使用DMS来承载数据库的智能…

    技术杂谈 2023年5月31日
    086
  • Linux安装cmatrix代码雨教程

    一:介绍 cmatrix代码雨是Linux的系统屏保界面;执行cmatrix不仅可以练习简单的编译安装软件三部曲,还可以执行cmatrix命令做出代码雨,提升文化实力 二:成品演示…

    技术杂谈 2023年7月11日
    077
  • Deepin 15.4 升级 chrome flash

    ~/.config/google-chrome/PepperFlash下建个目录 23.0.0.185,把 libpepflashplayer.so、manifest.json 拷…

    技术杂谈 2023年5月30日
    085
  • 61.小尖尖

    dsfsf posted @2022-09-28 08:35 随遇而安== 阅读(6 ) 评论() 编辑 Original: https://www.cnblogs.com/55z…

    技术杂谈 2023年6月21日
    0110
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球