后端开发|php教程
(大神)php curl验证码模拟登录问题
后端开发-php教程
会员消费管理系统源码,vscode快捷创建vue,ubuntu usb 花屏,tomcat动态加载.so,爬虫静态页面,php显示错误提示,抚顺网络seo多少钱,网站html5代码下载,找回密码短信模板lzw
function curlLogin($login_url, $cookieFile_code, $cookieFile_login, $loginParams, $target_url){ $ch = curl_init($login_url); curl_setopt($ch,CURLOPT_COOKIEFILE, $cookieFile_code); //验证码session值上传 curl_setopt($ch,CURLOPT_COOKIEJAR, $cookieFile_login); //获取登录cookiecurl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch,CURLOPT_POST, 1); curl_setopt($ch,CURLOPT_POSTFIELDS, $loginParams); //提交查询信息 curl_exec($ch); curl_close($ch); $ch = curl_init($target_url); curl_setopt($ch,CURLOPT_COOKIEFILE, $cookieFile_login); curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); $content = curl_exec($ch); if(curl_errno($ch)){ return curl_error($ch); } curl_close($ch); return $content;}
我在尝试模拟登录一个带有验证码的的网站,验证码我是使用人工识别的方式,在将本地存有session值的cookie和人工识别的验证码模拟登录后,我想要获取保持登录的cookie,可是获取到的却是验证码的cookie,我用的就是下面两行代码,请大神为我解答一下怎么修改呢?
html 广告页源码,vscode编写txt文件,ubuntu 退出登录,查看tomcat内存使用,sqlite数据库建立表,爬虫都喜欢在什么地方生活,php微信 登录授权,河北seo推广价格如何,网站源码免费下载,黄金投资网页模板织梦lzw
curl_setopt($ch,CURLOPT_COOKIEFILE, $cookieFile_code); //验证码session值上传 curl_setopt($ch,CURLOPT_COOKIEJAR, $cookieFile_login); //获取保持登录的cookie
二手物品交易商城源码,ubuntu新建url文档,tomcat6与7的区别,新闻多类别爬虫,php教程初学者免费学习,seo交流博客lzw
回复讨论(解决方案)
要分两步,先获取验证码的cookies,
然后提交后再获取登陆后的cookies。
根本没看我发的内容,我都说了我已经拿到验证码cookie了,现在是在获取登录的cookie。
你是按一下步步骤做的吗?(你只给个函数不能说明什么)
1、访问表单页(sessionid可能在这里就有)
2、读取验证码图片到识别表单
3、接收提交的验证码数据
4、将综合数据提交到表单目标页
除 3 外,每步都要有
curl_setopt($ch,CURLOPT_COOKIEFILE, $cookieFile_code);
curl_setopt($ch,CURLOPT_COOKIEJAR, $cookieFile_login);
显然这些工作是不可能在一个函数里完成的
尽管写的好的话,可以只用一个函数,但必然是多次调用的
我摸索中成功登录上去了,我模拟登录的系统比较奇怪,它至始至终的cookie值只有一个,就是验证码生成时产生的随机session,我将该我没用到curl_setopt($ch,CURLOPT_COOKIEFILE, $cookieFile_code);操作去提交cookie,我将里面的session值用正则匹配出来后,附加到header上去提交,其中我模拟登录失败的原因可能是因为服务器判断了来源页,没有设置虚拟来源页的登录都会被拒绝。另外说一下,我模拟登录的是方正的教务处系统。希望我的失败经验对其他人能有帮助。