phpcurl模拟浏览器
Ⅰ 如何用php模拟浏览器post二进制数据到服务器
CURL
$url = "http://localhost/web_services.php";
$post_data = array ("username" => "bob","key" => "12345");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// post数据
curl_setopt($ch, CURLOPT_POST, 1);
// post的变量
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
$output = curl_exec($ch);
curl_close($ch);
//打印获得的数据
print_r($output);
Ⅱ 怎么用curl模拟游览器UA[php]
具体怎么写,我一时写不出来了,因为要实现对一站点频繁的访问, 怕被封IPfunction curl_string ($url,$timeout = 3,$proxy=1){ $ua = array(
Ⅲ PHP curl模拟POST问题,为什么明明是模拟的是POST,firebug仍显示GET
firebug查看的是你通过浏览器发出的请求, curl是php做的,它是看不到的
你就把curl当成一个浏览器就行了
你可以在curl的接收端打印$_SERVER['REQUEST_METHOD']
或者用fidder抓包工具看下就看到了
Ⅳ 请教php curl模拟get请求与直接在浏览器访问网址有什么区别
curl方式你可以认为是服务端的ajax请求,服务端可以获取curl的结果,然后处理自己的业务,至于直接在浏览器访问,就不用说了,直接显示出请求的结果
Ⅳ php+curl 怎么模拟cookie信息进行网页抓取 在线等
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, '文件名'); // 将该次请求完成后 cookie信息保存到文件
curl_setopt($ch, CURLOPT_COOKIEFILE, '文件名'); // 这次请求过程中 用到的cookie信息 的文件
模拟cookie 你可以先curl一次那页面 获取到cookie之后 , 留待下次 用CURLOPT_COOKIEFILE 发送该段cookie 进行模拟
Ⅵ php中什么是curl会话是用来做什么的有什么作用
curl 就是模拟浏览器请求的,比如获取获取远程的网页,虽然可以使用file_get_content函数 但是 curl支持cookie 自定义浏览器类型,来源 ip等等。
Ⅶ 哪位达人会用PHP的curl模拟登陆百度
模拟浏览器登陆应用开发,最关键的地方是突破登陆验证。CURL技术不只支持http,还支持https。区别就在多了一层SSL加密传输。如果是要登陆https网站,php记得要支持openssl。还是先拿一个例子来分析。
//用户名
$login = 'username';
//密码
$password = 'password';
//163的用户登陆地址
$url = "https://reg.163.com/logins.jsp";
//post 要提交的数据
$fields = "verifycookie=1&style=16&proct=mail163&username=".$login."&password=".$password."&selType=jy&remUser=&secure=on&%B5%C7%C2%BC%D3%CA%CF%E4=%B5%C7%C2%BC%D3%CA%CF%E4";
//用来存放cookie的文件
$cookie_file = dirname(__FILE__)."/cookie.txt";
//启动一个CURL会话
$ch = curl_init();
// 要访问的地址
curl_setopt($ch, CURLOPT_URL, $url);
// 对认证证书来源的检查,0表示阻止对证书的合法性的检查。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
// 从证书中检查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
//模拟用户使用的浏览器,在HTTP请求中包含一个”user-agent”头的字符串。
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
//发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。
curl_setopt($ch, CURLOPT_POST, 1);
//要传送的所有数据,如果要传送一个文件,需要一个@开头的文件名
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
//连接关闭以后,存放cookie信息的文件名称
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
// 包含cookie信息的文件名称,这个cookie文件可以是Netscape格式或者HTTP风格的header信息。
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
// 设置curl允许执行的最长秒数
//curl_setopt($ch, CURLOPT_TIMEOUT, 6);
// 获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
// 执行操作
$result = curl_exec($ch);
if ($result == NULL) {
echo "Error:<br>";
echo curl_errno($ch) . " - " . curl_error($ch) . "<br>";
}
// 关闭CURL会话
curl_close($ch);上 面这个例子相对简单,因为用户名和密码可以明文传输,而且登陆也不需要验证码。qq.com的模拟登陆相对就麻烦多了,首先要突破验证码这关,然后由于 QQ密码是经过javascript加密后传输的,登陆界面也要模拟出来,下一篇文章再继续深入谈谈QQ的模拟登陆。
参考资料:
CURL详解 http://www.21andy.com/blog/20080507/1095.html
Tags: curl,模拟登陆wuzuquan 2008/07/18 09:40您好,我现在在做一个模拟yahoo登陆的php程序,因为yahoo的密码是经过javascript加密的,而且在加密过程中引用了一个网页随机生成的字符串challenge,这个字符串在每次访问网页的时候都不一样。
如果我采用curl来模拟登陆,过程如下:
先curl_init()初始化一个curl连接,设置相关选项后,curl_exec();然后利用采集功能得到challenge的值,经过加密计算出加密后的密码。再来一次curl_exec,将用户名,加密密码等post出去。
可是这样做采集到的challenge永远都是过时的,这该怎么解决呢?
希望不吝赐教,我的邮箱是[email protected]
Ⅷ 我用PHP CURL 模拟访问为什么统计不到
你所说的“其中一个人关闭了网站”是一个很明显的错误,网站的来访者所关闭的不是“网站”,只是他自己的浏览器。
从 Web 服务的机制上来说,服务器只是接收到对某个网页的请求后把相应的 HTML 格式的内容(可能包括 JavaScript程序)发送给请求者以后就关闭连接,至于浏览器端的用户是什么时候关闭浏览器(或者说是转移去查看别的网站的网页去了)服务器端是得不到任何信息的。
PHP、ASP、JSP 之类的网页访问只是服务器在发送 HTML 格式的内容之前需要先执行一下相应的文件里的程序,得到 HTML 格式的内容之后再发送而已,原理上还是发送完就关闭与请求者的连接。
服务器能得到的信息是接收来访者发来的网页请求信息的时候随同而来的IP地址,至于这个IP地址对应的用户什么时候跳转去看别的网站的网页去了服务器得不到任何信息。在你的 PHP 程序中,可以把得到一个来访者的IP地址的时候就给作为一个累加器用的跨网页文件跨不同来访者共享的变量添加1,20分钟之内没再接收到那个IP地址发来的请求就将累加器减1,这样,你把那个累加器内容显示出来就能反映你的网站在最近20分钟内有多少个IP来访问过,这个数就近似地反映了你的网站“在线人数”。
Ⅸ php如何模拟浏览器行为
// 用户名
$login = ‘username’;
//密码
$password = ‘password’;
//163的用户登陆地址
$url = “https://reg.163.com/logins.jsp”;
//post 要提交的数据
$fields = “verifycookie=1&style=16&proct=mail163&username=”.$login.”&password=”.$password.”&selType=jy&remUser=&secure=on&%B5%C7%C2%BC%D3%CA%CF%E4=%B5%C7%C2%BC%D3%CA%CF%E4″;
// 用来存放cookie的文件
$cookie_file = dirname(__FILE__).”/cookie.txt”;
// 启动一个CURL会话
$ch = curl_init();
// 要访问的地址
curl_setopt($ch, CURLOPT_URL, $url);
// 对认证证书来源的检查,0表示阻止对证书的合法性的检查。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
// 从证书中检查SSL加密算法是否存在
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
//模拟用户使用的浏览器,在HTTP请求中包含一个”user-agent”头的字符串。
curl_setopt($ch, CURLOPT_USERAGENT, “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)”);
// 发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。
curl_setopt($ch, CURLOPT_POST, 1);
//要传送的所有数据,如果要传送一个文件,需要一个@开头的文件名
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
//连接关闭以后,存放cookie信息的文件名称
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
// 包含cookie信息的文件名称,这个cookie文件可以是Netscape格式或者HTTP风格的header信息。
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
// 设置curl允许执行的最长秒数
//curl_setopt($ch, CURLOPT_TIMEOUT, 6);
// 获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
// 执行操作
$result = curl_exec($ch);
if ($result == NULL) {
echo “Error:
“;
echo curl_errno($ch) . ” – ” . curl_error($ch) . ”
“;
}
// 关闭CURL会话
curl_close($ch);
上面这个例子相对简单,因为用户名和密码可以明文传输,而且登陆也不需要验证码。qq.com的模拟登陆相对就麻烦多了,首先要突破验证码这关,然后由于 QQ密码是经过javascript加密后传输的,登陆界面也要模拟出来,下一篇文章再继续深入谈谈QQ的模拟登陆。
Ⅹ PHP中的curl模拟登陆中的$url登录界面地址与处理登录逻辑的地址有什么区别
要模拟浏览器访问网站,首选要学会观察浏览器是如何发送http报文的,以及网站服务器返回给浏览器 是什么样的内容。我推荐安装一个国外人开发的httpwatch的软件,最好搞个破解的版本,否则有些功能是使用不了的。这个软件安装完成之后是嵌入在 IE里的,启动Record,在地址栏输入网址后回车,它就会将浏览器和服务器之间的所有通讯扫描出来,让你一览无遗。关于这个软件的使用在本文不做介 绍。
模拟浏览器登陆应用开发,最关键的地方是突破登陆验证。CURL技术不只支持http,还支持https。区别就在多了一层SSL加密传输。如果是要登陆 https网站,php记得要支持openssl。还是先拿一个例子来分析。