HTTP的请求和相应以及php实现模拟、curl扩展的使用来模拟访问
1.处理不同的图片格式 针对图片处理的公共类兼容多种图片类型的处理。
只要使用不同类型的图片使用不同的imagecreatefrom类型即可实现。
【重点!!!】 【php实现网络编程】 2.HTTP请求协议【HTTP权威指南已经看了,但是还没有深刻的认识】 HTTP用于规范b/s架构中,浏览器和服务器之间信息数据交换的规则。【超文本传输协议对应的(超文本标记语言和数据)】
浏览器和服务器之间建立的TCP连接【连接部分需要注意:三次握手已经不说。持久连接本身占用的资源问题(持久连接保证了HTTP传输的顺利)】
请求的报文信息【request】 (1)请求行【请求数据的第一行,内有三个信息组成:请求方式(http请求的方式:例如get),请求url,协议版本(http/1.1)】 (2)请求头【带浏览器发送请求里的一些状态码:进行标示等等:浏览器信息,cookie等等】【需要使用一个空行标示结束】 (3)请求主体【post方式传输数据时有主体】
所谓的网络编程就是使用语言来模拟HTTP请求和结果,实现我们需要的效果。
3.php模拟HTTP请求 在知道HTTP请求的报文之后,使用php来生成这样的请求来进行模拟。 【重点】 【爬虫也是这样通过脚本实现请求和响应结果】 php模拟get请求 (1)先连接上目标服务器【利用php函数:fsocketopen建立一个socket或者internet连接。需要使用ip和端口进行唯一识别】 (2)使用该函数连接服务器之后,返回一个资源【stream流】 对资源和连接有一个比较清晰的认识。【关键是连接,而连接占用服务器资源的问题需要对服务器方面学习】 (3)连接之后,使用请求的报文进行模拟【php生成报文信息】 (4)发送请求【利用刚刚建立的stream数据通道,以及fwrite写入到目标服务器上】
于是便实现了php模拟一个HTTP请求。【而php脚本又需要浏览器请求才能够运行,所以这里用来模拟HTTP请求的脚本相当于做了一层中间层】
php来接收响应结果: 使用fgets来接受响应数据【一行行的接收。也是stream的流】 【使用循环来接收fgets的结果:显示全文(使用feof来判断是否到了数据流的结尾)】
4.HTTP响应信息 响应信息: 【响应行】:协议版本,状态码,状态消息【状态码和状态消息是对应的:用来表示响应结果】 状态码: 200:状态正常 300:请求被重定向 400:not found 500:server内部错误 【响应头】:服务器需要告知浏览器的一些信息【例如文件类型等等】【多行表示,还需要一个空行标示响应头结束】 【相应主体】:在浏览器中用来显示的文件都是相应主体。
【HTTP报文中需要的换行都需要使用在任何系统中都是换行的\r\n】
5.php操作响应结果 利用header函数来操作响应头【响应结果中的cookie也可以进行设置】【下载的本质是将原本从服务器上传输过来的数据保存起来(而不是显示):通过响应头来(header函数)管理。(通过header对文件的类型和是否打开进行管理便能实现下载)】 利用echo来操作响应主体【这个不需要太多说,直接输出即可处理】
6.php模拟post请求【也就是操作请求主体!!】 利用php来模拟一次表单提交。 键值对的形式来形成请求主体的格式。
只不过在HTTP中的信息中,通过空行来区别,和HTTP的机制本身并没有关系。【只不过需要在请求头里标示请求主体的必要信息:主体类型,主体长度等进行主体限制】 最后使用fwrite来实现数据的发送。
【重点】 7.curl 【用于专门来模拟HTTP请求,实现各种请求的方式】 【是一个独立的工具:是一个扩展】【php_curl.dll】 curl提供了很多函数来实现HTTP请求的模拟工作
一整套的函数需要注意使用。 【因为现在的请求基本需要cookie和session,所以curl也需要带着这些会话信息进行模拟请求】
因为有这样的模拟的过程,所以我们使用验证码防止暴力破解。【通过遍历的方式来确定用户的密码】
8.
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。