php curl模拟答题,总是400错误
php curl php curl
我想模拟这个网站的答题:http://zsjs.kaiwind.com/kf/html/index.html他是在上面的页面登陆,之后到新的页面去答题,答题全部结束且真确之后,允许提交。
他是ajax提交,全部js验证通过后,回想后台发送ajax请求,完成页面。
他发送的数据倒是不复杂,但是在模拟他数据发送的时候,却总是出错,下面贴出代码和错误提示,望各位大神给予解救。
代码:
curl请求部分:
<?phpfunction vget($url,$header = null){//模拟获取内容函数 global $browsers; $curl = curl_init();//启动一个CURL会话 curl_setopt($curl, CURLOPT_URL, $url);//要访问的地址 curl_setopt($curl, CURLOPT_HTTPHEADER, $browsers);//设置HTTP头 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);// 对认证证书来源的检查 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);// 从证书中检查SSL加密算法是否存在 curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);// 模拟用户使用的浏览器 curl_setopt($curl,CURLOPT_REFERER,'HTTP://www.baidu.com'); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);// 使用自动跳转 curl_setopt($curl, CURLOPT_AUTOREFERER, 1);// 自动设置Referer curl_setopt($curl, CURLOPT_HTTPGET, 1);// 发送一个常规的GET请求 curl_setopt($curl, CURLOPT_COOKIEJAR, $GLOBALS['cookie_file']);//保存cookie文件 if(isset($header) && !is_null($header)){ curl_setopt($curl, CURLOPT_HTTPHEADER, $header);//设置头信息的地方 } curl_setopt($curl, CURLOPT_HEADER, true); curl_setopt($curl, CURLOPT_TIMEOUT, 30);// 设置超时限制防止死循环 curl_setopt($curl, CURLOPT_HEADER, 0);// 显示返回的Header区域内容 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);// 获取的信息以文件流的形式返回 $tmpInfo = curl_exec($curl);// 执行操作 if (curl_errno($curl)){ echo 'Errno'.curl_error($curl); } curl_close($curl);// 关闭CURL会话 return $tmpInfo;// 返回数据 }function vpost($url,$data){ // 模拟提交数据函数 global $browsers; //$header = "Content-type: application/x-www-form-urlencoded";//定义content-type为xml $curl = curl_init(); // 启动一个CURL会话 curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查 curl_setopt($curl, CURLOPT_HTTPHEADER, $browsers);//设置HTTP头 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在 curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转 curl_setopt($curl, CURLOPT_REFERER, 'http://zsjs.kaiwind.com/kf/html/question.html?15238132836?10'); //curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求 curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包 curl_setopt($curl, CURLOPT_COOKIEFILE, $GLOBALS['cookie_file']); // 读取上面所储存的Cookie信息 curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环 curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 $tmpInfo = curl_exec($curl); // 执行操作 if (curl_errno($curl)){ echo 'Errno'.curl_error($curl); } curl_close($curl); // 关键CURL会话 return $tmpInfo; // 返回数据 }
执行部分:
<?php header('Content-type:text/html;charset=utf-8'); $phone = '15238132836'; $area = '10'; $cookie_jar = tempnam('./','cookie');//指定保存sessionid的cookie文件位置 $data = array( 'tel'=>urlencode($phone), 'area'=>urlencode($area) ); $GLOBALS['cookie_file'] = $cookie_jar; require_once('./functions.php'); $url = 'http://zsjs.kaiwind.com/kf/html/index.html'; // vget($url); //exit(); $browsers = array ( "Accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Encoding" => "gzip, deflate", "Accept-Language"=>"zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3", "Cache-Control"=>"max-age=0", "Connection"=>"keep-alive", "Content-type"=>"application/x-www-form-urlencoded", //"Cookie"=>"CNZZDATA199524=cnzz_eid%3D713570903-1381646309-http%253A%252F%252Fzsjs.kaiwind.com%26ntime%3D1381738758%26cnzz_a%3D0%26retime%3D1381738758499%26sin%3D%26ltime%3D1381738758499%26rtime%3D1", "Host"=>"zsjs.kaiwind.com", "User-Agent"=>"Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0" ); $url = 'http://zsjs.kaiwind.com/kf/kfcheck.php'; dump(vpost($url,$data)); exit(); $url = 'http://zsjs.kaiwind.com/kf/kfsub.php'; dump(vpost($url,$data));?>
页面返回的结果:
string(90) "
400 Bad request
Your browser sent an invalid request.
"
回复讨论(解决方案)
cookie放在最后一行、?
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
把这句注释掉试试

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Laravel使用其直观的闪存方法简化了处理临时会话数据。这非常适合在您的应用程序中显示简短的消息,警报或通知。 默认情况下,数据仅针对后续请求: $请求 -

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显着减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、
