主页 M

PHP - CURL 模拟请求

2014-05-18 网页编程网 网页编程网

模拟简单 Get 请求示例:
==============================================

$url = "http://somedomain/ver/ffffffff-e31e-85d5-ffff-ffffa6220605/2/en/b0:79:94:e7:99:4a/3.5";
$ch = curl_init($url); //初始化
curl_setopt($ch, CURLOPT_HEADER, 0); // 不返回header部分
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回字符串,而非直接输出
curl_setopt($ch, CURLOPT_USERAGENT, "Dalvik/1.6.0 (Linux; U; Android 4.1.2; DROID RAZR HD Build/9.8.1Q-62_VQW_MR-2)");
curl_setopt($ch, CURLOPT_REFERER, "-");
$response = curl_exec($ch);
curl_close($ch);
print_r($response);

上面模拟的是手机端的请求,上面将 UserAgent 设置成一个安卓手机的信息.有很多站点判断请求是哪里来的,用这个可以混一下.同时设置 Referer, 表示从哪里跳到当前这个地址的,有的站点也会做判断.

模拟 POST 登录.然后做其它事:
==============================================
注意: 登录成功后, Cookie 里会保存一个 sessionID, 后续我们访问其它页面不需要再登录是因为我们访问页面时会带上 cookie , 所以服务端通过该 sessionID 来判断我们是否已经登录.当 cookie 过期后我们就需要重新登录了.
所以我们模拟登录时, 也要保存一下 cookie, 然后在后续模拟时将它带上

$account = "yourusername";
$password = "yourpassword";
$post = "account=$account&password=$password";
// 先获取cookies并保存
$cookie_file = dirname(__FILE__).'/cookie.txt';
$url = "http://domain/login";
$ch = curl_init($url); //初始化
curl_setopt($ch, CURLOPT_HEADER, 0); // 不返回header部分
curl_setopt($ch, CURLOPT_POST, 1);// 表明这次请求是 POST 的
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);// 设置 POST 参数
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回字符串,而非直接输出
curl_setopt($ch, CURLOPT_COOKIEJAR,  $cookie_file); // 存储cookies
curl_exec($ch);
curl_close($ch);
// 登录成功后,获得用户其它页面的内容
$url = "http://domain/otherpage";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); // 使用上面获取的cookies
$response = curl_exec($ch);
curl_close($ch);
print_r($response)
阅读原文
阅读 4369
123 显示电脑版