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']); // 模拟用户使用的浏览器
把这句注释掉试试

PHP在现代编程中仍然是一个强大且广泛使用的工具,尤其在web开发领域。1)PHP易用且与数据库集成无缝,是许多开发者的首选。2)它支持动态内容生成和面向对象编程,适合快速创建和维护网站。3)PHP的性能可以通过缓存和优化数据库查询来提升,其广泛的社区和丰富生态系统使其在当今技术栈中仍具重要地位。

在PHP中,弱引用是通过WeakReference类实现的,不会阻止垃圾回收器回收对象。弱引用适用于缓存系统和事件监听器等场景,需注意其不能保证对象存活,且垃圾回收可能延迟。

\_\_invoke方法允许对象像函数一样被调用。1.定义\_\_invoke方法使对象可被调用。2.使用$obj(...)语法时,PHP会执行\_\_invoke方法。3.适用于日志记录和计算器等场景,提高代码灵活性和可读性。

Fibers在PHP8.1中引入,提升了并发处理能力。1)Fibers是一种轻量级的并发模型,类似于协程。2)它们允许开发者手动控制任务的执行流,适合处理I/O密集型任务。3)使用Fibers可以编写更高效、响应性更强的代码。

PHP社区提供了丰富的资源和支持,帮助开发者成长。1)资源包括官方文档、教程、博客和开源项目如Laravel和Symfony。2)支持可以通过StackOverflow、Reddit和Slack频道获得。3)开发动态可以通过关注RFC了解。4)融入社区可以通过积极参与、贡献代码和学习分享来实现。

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

PHP不是在消亡,而是在不断适应和进化。1)PHP从1994年起经历多次版本迭代,适应新技术趋势。2)目前广泛应用于电子商务、内容管理系统等领域。3)PHP8引入JIT编译器等功能,提升性能和现代化。4)使用OPcache和遵循PSR-12标准可优化性能和代码质量。

PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

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

WebStorm Mac版
好用的JavaScript开发工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3 Linux新版
SublimeText3 Linux最新版

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