利用php怎么获取网页请求的状态

介绍

这篇文章给大家介绍利用php怎么获取网页请求的状态,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强>方法一,使用fsockopen

(不推荐使用curl_getinfo !)

代码如下:


函数get_http_code ($ url=發ocalhost",端口=80美元,美元fsock_timeout=10) {
,,,set_time_limit (0);
,,,ignore_user_abort(真正);

,,,//记录开始时间
,,,列表(美国铀浓缩公司(sec)美元=爆炸(““(真正的));
,,,$计时器[& # 39;开始# 39;]=(浮动)美国铀浓缩公司+(浮动)交会美元;

,,,//校验URL
,,,如果(! preg_match (“/^ https ?: \/\//我,$ url)) {
,,,,,,,$ url=癶ttp://"。$ url;
,,,}
,,,//支持HTTPS
,,,如果(preg_match (“/^ https: \/\//我,$ url)) {
,,,,,,,端口=443美元;
,,,}

,,,//解析URL
,,,美元$ urlinfo=parse_url (url);
,,,如果(空($ urlinfo [& # 39; path & # 39;])) {
,,,,,,,$ urlinfo [& # 39; path & # 39;]=& # 39;/& # 39;;
,,,}
,,,主机=urlinfo美元[& # 39;主机# 39;],
,,,uri=urlinfo美元[& # 39;path & # 39;]。(空($ urlinfo[& # 39;查询# 39;])? & # 39;& # 39;:美元urlinfo[& # 39;查询# 39;]);

,,,//通过fsock打开连接
,,,如果(!$ fp=fsockopen(主机、端口、美元errno美元,美元错误,fsock_timeout美元)){
,,,,,,,列表(美国铀浓缩公司(sec)美元=爆炸(““(真正的));
,,,,,,,$计时器[& # 39;结束# 39;]=(浮动)美国铀浓缩公司+(浮动)交会美元;
,,,,,,,usetime=(浮动)定时器美元[& # 39;结束# 39;]-(浮动)美元计时器(& # 39;开始# 39;],

,,,,,,,返回数组(& # 39;代码# 39;=祝辞1 & # 39;usetime& # 39;=祝辞usetime美元);
,,,}

,,,//提交请求
,,,美元美元地位=socket_get_status (fp);
,,,美元出去=皗$ uri} HTTP/1.1 \ r \ n";
,,,美元。=爸鞒秩?{$主机}\ r \ n";
,,,美元。=傲?紧密\ r \ n \ r \ n";
,,,$写=写入文件(fp)美元;
,,,如果(! $写){
,,,,,,,列表(美国铀浓缩公司(sec)美元=爆炸(““(真正的));
,,,,,,,$计时器[& # 39;结束# 39;]=(浮动)美国铀浓缩公司+(浮动)交会美元;
,,,,,,,usetime=(浮动)定时器美元[& # 39;结束# 39;]-(浮动)美元计时器(& # 39;开始# 39;],

,,,,,,,返回数组(& # 39;代码# 39;=祝辞;2,& # 39;usetime& # 39;=祝辞usetime美元);
,,,}

,,,$ ret=fgets (fp 1024美元);
,,,preg_match (“/http \/\ d \ \ d \ s (\ d +)/我,随著美元,美元m);
,,,代码=m美元[1],
,,,文件关闭(fp);

,,,列表(美国铀浓缩公司(sec)美元=爆炸(““(真正的));
,,,$计时器[& # 39;结束# 39;]=(浮动)美国铀浓缩公司+(浮动)交会美元;
,,,usetime=(浮动)定时器美元[& # 39;结束# 39;]-(浮动)美元计时器(& # 39;开始# 39;],

,,,返回数组(& # 39;代码# 39;=在代码中,美元& # 39;usetime& # 39;=祝辞usetime美元);
}

file_get_contents是fsockopen功能的简单打包,效率稍低些,但是抓取成功率很高,所以在史努比出问题的时候我一般拿他来用.5.0.0添加了对上下文的支持,有了上下文,他也可以发送头信息,自定义用户代理,推荐人,饼干都不在话下.5.1.0添加了抵消和maxlen参数,可以只读文件的一部分内容。

<强>方法二、使用snoopy.class。php

史努比是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单。

代码如下:


$ ch=curl_init ();
curl_setopt ($ ch CURLOPT_URL & # 39; https://www.jb51.net/& # 39;);
curl_setopt ($ ch CURLOPT_RANGE & # 39; 0 - 500 & # 39;);
curl_setopt (ch美元CURLOPT_BINARYTRANSFER 1);
curl_setopt (ch美元CURLOPT_RETURNTRANSFER 1);
$结果=curl_exec (ch);
curl_close (ch);
echo $结果;

$ writefn=函数(ch,块美元){
,静态$ data=https://www.yisu.com/zixun/?
,静态限制美元=500;//500字节,这# 39;s>关于利用php怎么获取网页请求的状态就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

利用php怎么获取网页请求的状态