-
php使用fsockopen函数发送post,get请求获取网页内容的方法
这篇文章主要介绍了php使用fsockopen函数发送post,get请求获取网页内容的方法,是PHP关于socket编程的一个典型应用,需要的朋友可以参考下
本文实例讲述了php使用fsockopen函数发送post,get请求获取网页内容的方法。分享给大家供大家参考。
具体实现代码如下:
- $post =1;
- $url = parse_url($url);
- $host ='https://www.phpfensi.com';
- $path ='/';
- $query ='?action=phpfensi.com';
- $port =80;
- if($post) {
- $out = "post $path http/1.0 ";
- $out .= "accept: */* ";
- //$out .= "referer: $boardurl ";
- $out .= "accept-language: zh-cn ";
- $out .= "content-type: application/x-www-form-urlencoded ";
- $out .= "user-agent: $_server[http_user_agent] ";
- $out .= "host: $host ";
- $out .= 'content-length: '.strlen($post)." ";
- $out .= "connection: close ";
- $out .= "cache-control: no-cache ";
- $out .= "cookie: $cookie ";
- $out .= $post;
- } else {
- $out = "get $path http/1.0 ";
- $out .= "accept: */* ";
- //$out .= "referer: $boardurl ";
- $out .= "accept-language: zh-cn ";
- $out .= "user-agent: $_server[http_user_agent] ";
- $out .= "host: $host ";
- $out .= "connection: close ";
- $out .= "cookie: $cookie ";
- }
- $fp = @fsockopen(($ip ? $ip : $host), $port, $errno, $errstr, $timeout);
- if(!$fp)
- {
- return '';//note $errstr : $errno
- } else {
- return '成功访问';
- }
fsockopen语法:
resource fsockopen(string $hostname [,int $port = -1 [, int &$errno [,string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] )
启动一个套接字连接到指定的主机的资源,php支持在互联网领域的目标和unix在所支持的套接字传输列表说明,所支持的传输列表也可以检索使用stream_get_transports().
该插座预设会被启用,阻塞模式,你可以切换到非阻塞模式使用stream_set_blocking(),如果上面实例看不懂,就来看个简的吧,代码如下:
- $fp = fsockopen("www.phpfensi.com", 80, $errno, $errstr, 30);
- if (!$fp) {
- echo "$errstr ($errno) ";
- } else {
- $out = "get / http/1.1 ";
- $out .= "host: www.phpfensi.com";
- $out .= "connection: close ";
- fwrite($fp, $out);
- while (!feof($fp)) {
- echo fgets($fp, 128);
- }
- fclose($fp);
- }
希望本文所述对大家的PHP程序设计有所帮助。
出处:http://www.phpfensi.com/php/20210426/14556.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式