php模拟post行为代码总结(POST方式不是绝对安全)


Posted in PHP onFebruary 22, 2012

这里提供两种方法供选择:第一:手写代码。第二:利用HttpClient php类库

第一种方法:

<?PHP 
$flag = 0; 
//要post的数据 
$argv = array( 
'var1'=>'abc', 
'var2'=>'你好吗'); 
//构造要post的字符串 
foreach ($argv as $key=>$value) { 
if ($flag!=0) { 
$params .= "&"; 
$flag = 1; 
} 
$params.= $key."="; $params.= urlencode($value); 
$flag = 1; 
} 
$length = strlen($params); 
//创建socket连接 
$fp = fsockopen("127.0.0.1",80,$errno,$errstr,10) or exit($errstr."--->".$errno); 
//构造post请求的头 
$header = "POST /mobile/try.php HTTP/1.1"; 
$header .= "Host:127.0.0.1"; 
$header .= "Referer:/mobile/sendpost.php"; 
$header .= "Content-Type: application/x-www-form-urlencoded"; 
$header .= "Content-Length: ".$length.""; 
$header .= "Connection: Close"; 
//添加post的字符串 
$header .= $params.""; 
//发送post的数据 
fputs($fp,$header); 
$inheader = 1; 
while (!feof($fp)) { 
$line = fgets($fp,1024); //去除请求包的头只显示页面的返回数据 
if ($inheader && ($line == "n" || $line == "")) { 
$inheader = 0; 
} 
if ($inheader == 0) { 
echo $line; 
} 
} 
fclose($fp); 
?>

第二种方法是:使用httpclient类

$pageContents = HttpClient::quickPost('http://example.com/someForm', array( 
'name' => 'Some Name', 
'email' => 'email@example.com' 
));

使用httpclient类库,可以去官方下载最新的类库,官方地址为:http://scripts.incutio.com/httpclient/index.php

附加一些点php httpclient的其他几个用法

静态方法获取网页:

$pageContents = HttpClient::quickGet('http://bankcha.com')

Get方法获取

$client = new HttpClient('bankcha.com'); 
if (!$client->get('/')) { 
die('An error occurred: '.$client->getError()); 
} 
$pageContents = $client->getContent(); 
带调试的Get方法获取 

PHP代码 
$client = new HttpClient('bankcha.com'); 
$client->setDebug(true); 
if (!$client->get('/')) { 
die('An error occurred: '.$client->getError()); 
} 
$pageContents = $client->getContent(); 

带自动转向的Get方法 

PHP代码 

$client = new HttpClient('www.bankcha.com'); 
$client->setDebug(true); 
if (!$client->get('/')) { 
die('An error occurred: '.$client->getError()); 
} 
$pageContents = $client->getContent(); 

检查页面是否存在 

PHP代码 
$client = new HttpClient('bankcha.com'); 
$client->setDebug(true); 
if (!$client->get('/thispagedoesnotexist')) { 
die('An error occurred: '.$client->getError()); 
} 
if ($client->getStatus() == '404') { 
echo 'Page does not exist!'; 
} 
$pageContents = $client->getContent(); 

伪造客户端 

PHP代码 
$client = new HttpClient('bankcha.com'); 
$client->setDebug(true); 
$client->setUserAgent('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.3a) Gecko/20021207'); 
if (!$client->get('/')) { 
die('An error occurred: '.$client->getError()); 
} 
$pageContents = $client->getContent(); 

登录验证并请求一个网页 

PHP代码 
$client = new HttpClient('bankcha.com'); 
$client->post('/login.php', array( 
'username' => 'Simon', 
'password' => 'ducks' 
)); 
if (!$client->get('/private.php')) { 
die('An error occurred: '.$client->getError()); 
} 
$pageContents = $client->getContent(); 

HTTP授权 

PHP代码 
$client = new HttpClient('bankcha.com'); 
$client->setAuthorization('Username', 'Password'); 
if (!$client->get('/')) { 
die('An error occurred: '.$client->getError()); 
} 
$pageContents = $client->getContent(); 

输出头信息 

PHP代码 
$client = new HttpClient('bankcha.com'); 
if (!$client->get('/')) { 
die('An error occurred: '.$client->getError()); 
} 
print_r($client->getHeaders()); 

设置一个域内重定向最多次数 

PHP代码 
$client = new HttpClient('www.bankcha.com'); 
$client->setDebug(true); 
$client->setMaxRedirects(3); 
$client->get('/');

php fsockopen 伪造 post和get方法
fsockopen 伪造 post和get方法哦,如果你正在找 伪造 post和get方法的php处理代码这款不错哦。
<?php 
//fsocket模拟post提交 
$purl = "http://localhost/netphp/test2.php?uu=rrrrrrrrrrrr"; 
print_r(parse_url($url)); 
sock_post($purl,"uu=55555555555555555"); 
//fsocket模拟get提交 
function sock_get($url, $query) 
{ 
$info = parse_url($url); 
$fp = fsockopen($info["host"], 80, $errno, $errstr, 3); 
$head = "GET ".$info['path']."?".$info["query"]." HTTP/1.0rn"; 
$head .= "Host: ".$info['host']."rn"; 
$head .= "rn"; 
$write = fputs($fp, $head); 
while (!feof($fp)) 
{ 
$line = fread($fp,4096); 
echo $line; 
} 
} 
sock_post($purl,"uu=rrrrrrrrrrrrrrrr"); 
function sock_post($url, $query) 
{ 
$info = parse_url($url); 
$fp = fsockopen($info["host"], 80, $errno, $errstr, 3); 
$head = "POST ".$info['path']."?".$info["query"]." HTTP/1.0rn"; 
$head .= "Host: ".$info['host']."rn"; 
$head .= "Referer: http://".$info['host'].$info['path']."rn"; 
$head .= "Content-type: application/x-www-form-urlencodedrn"; 
$head .= "Content-Length: ".strlen(trim($query))."rn"; 
$head .= "rn"; 
$head .= trim($query); 
$write = fputs($fp, $head); 
while (!feof($fp)) 
{ 
$line = fread($fp,4096); 
echo $line; 
} 
} 
?>
PHP 相关文章推荐
社区(php&amp;&amp;mysql)二
Oct 09 PHP
php添加文章时生成静态HTML文章的实现代码
Feb 17 PHP
php Xdebug的安装与使用详解
Jun 20 PHP
php实现的获取网站备案信息查询代码(360)
Sep 23 PHP
调整PHP的性能
Oct 30 PHP
CI框架验证码CAPTCHA辅助函数用法实例
Nov 05 PHP
smarty模板引擎中自定义函数的方法
Jan 22 PHP
Laravel中使用自己编写类库的3种方法
Feb 10 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
Dec 19 PHP
thinkPHP简单遍历数组方法分析
May 16 PHP
PHP实现APP微信支付的实例讲解
Feb 10 PHP
php生成word并下载代码实例
Mar 15 PHP
用穿越火线快速入门php面向对象
Feb 22 #PHP
php重定向的三种方法分享
Feb 22 #PHP
php中echo()和print()、require()和include()等易混淆函数的区别
Feb 22 #PHP
我的php学习笔记(毕业设计)
Feb 21 #PHP
PHP中运用jQuery的Ajax跨域调用实现代码
Feb 21 #PHP
修改PHP的memory_limit限制的方法分享
Feb 21 #PHP
php中取得文件的后缀名?
Feb 20 #PHP
You might like
用php获取远程图片并把它保存到本地的代码
2008/04/07 PHP
php数字转汉字代码(算法)
2011/10/08 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
2015/02/10 PHP
自动更新作用
2006/10/08 Javascript
Add a Formatted Table to a Word Document
2007/06/15 Javascript
Ext JS Grid在IE6 下宽度的问题解决方法
2009/02/15 Javascript
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
js的隐含参数(arguments,callee,caller)使用方法
2014/01/28 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
基于Vue中点击组件外关闭组件的实现方法
2018/03/06 Javascript
seajs下require书写约定实例分析
2018/05/16 Javascript
ES6与CommonJS中的模块处理的区别
2018/06/13 Javascript
create-react-app安装出错问题解决方法
2018/09/04 Javascript
微信小程序自定义导航栏实例代码
2019/04/05 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
Python中MySQL数据迁移到MongoDB脚本的方法
2016/04/28 Python
django2 快速安装指南分享
2018/01/05 Python
Django项目实战之用户头像上传与访问的示例
2018/04/21 Python
Python清空文件并替换内容的实例
2018/10/22 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
2019/10/11 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
2019/12/13 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
Bulk Powders意大利:运动补充在线商店
2019/02/09 全球购物
澳大利亚在线床零售商:Bedworks
2020/09/01 全球购物
教师研修随笔感言
2014/01/23 职场文书
新闻发布会策划方案
2014/06/12 职场文书
学校百日安全生产活动总结
2014/07/05 职场文书
四风问题个人自查剖析材料思想汇报
2014/09/21 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
博士导师推荐信
2015/03/25 职场文书
采购员工作总结范文
2015/08/12 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python
MySQL创建管理KEY分区
2022/04/13 MySQL