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 相关文章推荐
在字符串中把网址改成超级链接
Oct 09 PHP
PHP中uploaded_files函数使用方法详解
Mar 09 PHP
记录mysql性能查询过程的使用方法
May 02 PHP
PHP5函数小全(分享)
Jun 06 PHP
php使用smtp发送支持附件的邮件示例
Apr 13 PHP
使用php的HTTP请求的库Requests实现美女图片墙
Feb 22 PHP
一个完整的PHP类包含的七种语法说明
Jun 04 PHP
ThinkPHP连接Oracle数据库
Apr 22 PHP
thinkphp3.x中display方法及show方法的用法实例
May 19 PHP
详细解读php的命名空间(二)
Feb 21 PHP
Laravel程序架构设计思路之使用动作类
Jun 07 PHP
php工具型代码之印章抠图
Jul 18 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 $_ENV为空的原因分析
2009/06/01 PHP
PHP中设置时区方法小结
2012/06/03 PHP
基于PHP magic_quotes_gpc的使用方法详解
2013/06/24 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
通过JS 获取Mouse Position(鼠标坐标)的代码
2009/09/21 Javascript
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
jQuery 入门级学习笔记及源码
2010/01/22 Javascript
Tab页界面 用jQuery及Ajax技术实现(php后台)
2011/10/12 Javascript
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
你必须知道的Javascript知识点之&quot;字面量和对应类型&quot;说明介绍
2013/04/23 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
通过js简单实现将一个文本内容转译成加密文本
2013/10/22 Javascript
js setTimeout opener的用法示例详解
2013/10/23 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
jQuery带箭头提示框tooltips插件集锦
2014/11/17 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
2015/11/17 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
JS基于对象的链表实现与使用方法示例
2019/01/31 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
2019/04/10 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
关于vue 项目中浏览器跨域的配置问题
2020/11/10 Javascript
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
2013/11/27 Python
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
使用python和Django完成博客数据库的迁移方法
2018/01/05 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
Python OpenCV去除字母后面的杂线操作
2020/07/05 Python
Python爬取股票信息,并可视化数据的示例
2020/09/26 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
美国旅游网站:Tours4Fun
2017/02/17 全球购物
台湾深度自由行旅游平台:Tripbaa趣吧
2017/10/10 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
2014年后备干部工作总结
2014/12/08 职场文书
委托函范文
2015/01/29 职场文书
新手开公司创业注意事项有哪些?
2019/07/29 职场文书