php实现模拟登陆的原理讨论交流 GET /test4.php建议多看看HTTP协议的内容。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 呵呵,看看HTTP协议吧http://www.cnpaf.net/class/http/ 这个问题很好解决,先下载一个http sniffer ,启动监视打开要进行登陆操作的网站,然后实际操作一下,操作结束后,打开sniffer看一下浏览器和server之间发送的原始数据,再用php模拟浏览器照原样发送即可。这种情况还是使用一个httpClient类来处理比较方便一些。 header("Referer: http://......."); 一样的啊,HTTP协议就是这样的 糊涂了。这么说吧,我想用php来实现登陆www.cmfu.com这个网站。怎么实现? <?php// simple post method// version 1.0 by Andrus ([email protected])// Disclaimer:// everyone can change or use this code however and wherever they want ;)// NB! For posting to Microsoft platform webservers you may need to change newlines "\r\n" to "\r\r\n"// Microsoft always breaks standards ... // send out "browser" headersfunction send_headers ($fp) { fputs ($fp, "Accept: */*\r\n"); //fputs ($fp, "Accept-Language: en\r\n"); fputs ($fp, "Connection: Keep-Alive\r\n"); fputs ($fp, "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)\r\n");}// post data and return replyfunction post_data ($host, $url, $data) { $fp = @fsockopen ($host, 80, $errno, $errstr, 120); $ret = ""; if (strncasecmp ($url, "http://", 7) == 0) $url = substr ($url, 7); $p = strpos ($url, '/'); if ($p==="") { $req = "/"; } else { $req = substr ($url, $p); } if ($fp) { fputs ($fp, "POST $req HTTP/1.0\r\n"); send_headers ($fp); fputs ($fp, "Content-type: application/x-www-form-urlencoded\r\n"); $out = ""; while (list ($k, $v) = each ($data)) { if(strlen($out) != 0) $out .= "&"; $out .= rawurlencode($k). "=" .rawurlencode($v); } $out = trim ($out); fputs ($fp, "Content-length: ".strlen($out)."\r\n\r\n"); fputs ($fp, "$out"); fputs ($fp, "\r\n"); while(!feof($fp)){ $ret .= fgets($fp); } fclose ($fp); } return $ret;}// example how to use:// following code will post variables "login" and "pass" to server "www.something.om" script "/submit.php"$reply = post_data ("www.ecool2004.com", "/vote.asp", array ("Options" => "6"));echo $reply;?> 楼上这种方法是普通的post方法,通不过对refer有限制的程序。 wampserver无法访问localhost 在mysqli中判断结果集为空最最简单的方法是什么 php可以嵌套吗 外部传入变量的问题,急! 那里有好的源码下载,来者给分! 怎么样同时解释.php和.php3的文件呀,急问 在php中使用sql server 存储过程,可是返回值或者输出参数不知怎么接收,望各位大虾告知,感激不尽!!! 请教宇凡---关于提取html文件原代码 PHPEclipse 导入易框架项目文件出现xx报错 ecshop中的错误 php 5开发工具 一个关于strtotime的日期问题
http://www.cnpaf.net/class/http/
先下载一个http sniffer ,启动监视
打开要进行登陆操作的网站,然后实际操作一下,操作结束后,打开sniffer看一下
浏览器和server之间发送的原始数据,再用php模拟浏览器照原样发送即可。这种情况还是使用一个httpClient类来处理比较方便一些。
<?php
// simple post method
// version 1.0 by Andrus ([email protected])// Disclaimer:
// everyone can change or use this code however and wherever they want ;)// NB! For posting to Microsoft platform webservers you may need to change newlines "\r\n" to "\r\r\n"
// Microsoft always breaks standards ... // send out "browser" headers
function send_headers ($fp) {
fputs ($fp, "Accept: */*\r\n");
//fputs ($fp, "Accept-Language: en\r\n");
fputs ($fp, "Connection: Keep-Alive\r\n");
fputs ($fp, "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)\r\n");
}// post data and return reply
function post_data ($host, $url, $data) {
$fp = @fsockopen ($host, 80, $errno, $errstr, 120);
$ret = "";
if (strncasecmp ($url, "http://", 7) == 0) $url = substr ($url, 7);
$p = strpos ($url, '/');
if ($p==="") {
$req = "/";
} else {
$req = substr ($url, $p);
}
if ($fp) {
fputs ($fp, "POST $req HTTP/1.0\r\n");
send_headers ($fp);
fputs ($fp, "Content-type: application/x-www-form-urlencoded\r\n");
$out = "";
while (list ($k, $v) = each ($data)) {
if(strlen($out) != 0) $out .= "&";
$out .= rawurlencode($k). "=" .rawurlencode($v);
}
$out = trim ($out);
fputs ($fp, "Content-length: ".strlen($out)."\r\n\r\n");
fputs ($fp, "$out");
fputs ($fp, "\r\n");
while(!feof($fp)){
$ret .= fgets($fp);
}
fclose ($fp);
}
return $ret;
}
// example how to use:// following code will post variables "login" and "pass" to server "www.something.om" script "/submit.php"
$reply = post_data ("www.ecool2004.com", "/vote.asp", array ("Options" => "6"));
echo $reply;
?>