1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > PHP使用CURL实现对带有验证码的网站进行模拟登录办法curl验证码

PHP使用CURL实现对带有验证码的网站进行模拟登录办法curl验证码

时间:2021-09-04 14:11:15

相关推荐

PHP使用CURL实现对带有验证码的网站进行模拟登录办法curl验证码

php教程|php手册

PHP,CURL,模拟登录,curl

php教程-php手册

PHP使用CURL实现对带有验证码的网站进行模拟登录的方法,curl验证码

品牌 源码,vscode如何缩放,ubuntu21.4中文语言包,tomcat 安装方法,sqlite主键默认索引,自定义table插件,web前端开发怎么构建框架,b站视频无法爬虫,php扩展配置,遂平优化seo,书画网站免费源码, 浏览网页,中文个人网页模板htmllzw

网上的很多模拟登录程序,大都是通过服务程序apache之类的运行,获取到验证码之后显示在网页上,然后填上再POST出去,这样虽然看起来很友好,但是既然模拟登录,登录后所干的事情就不一定是短时间完成的,所以这就要受到php最大执行时间的限制,而且有些操作还有可能权限不足。

p2p聊天室源码,vscode lite,ubuntu fork,joint tomcat,sqlite删除表格,hotmail服务器设置,手机滚动条插件,前端开发框架v,iis爬虫日志,php截取字符串长度,seo推广策划,保健品网站源码,静态网页设计作品下载,flat 登录html 模板 酷站登陆,个人主页页面代码,学生成绩管理系统程序,wecenter 社交化问答社区程序lzw

本文提供了一个程序实例,思路就是获取到验证码之后把验证码存储为一个图片,然后程序休眠20秒,在20秒之后由用户手动查看图片,并把验证码填写到code.txt文件中,20秒休眠完成后,程序会读code.txt的验证码,这样再带着验证码进行登录操作。具体代码如下:

企业源码下载,vscode怎么添加函数库,ubuntu用户详细,tomcat安全架构,网页爬虫登录,ajax 代理 php,下城区seo推广多少钱lzw

/** * 模拟登录 *///初始化变量$cookie_file = "tmp.cookie";$login_url = "/logon.php";$verify_code_url = "/verifyCode.php";echo "正在获取COOKIE...\n";$curlj = curl_init();$timeout = 5;curl_setopt($curl, CURLOPT_URL, $login_url);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);curl_setopt($curl,CURLOPT_COOKIEJAR,$cookie_file); //获取COOKIE并存储$contents = curl_exec($curl);curl_close($curl);echo "COOKIE获取完成,正在取验证码...\n";//取出验证码$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $verify_code_url);curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);curl_setopt($curl, CURLOPT_HEADER, 0);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);$img = curl_exec($curl);curl_close($curl);$fp = fopen("verifyCode.jpg","w");fwrite($fp,$img);fclose($fp);echo "验证码取出完成,正在休眠,20秒内请把验证码填入code.txt并保存\n";//停止运行20秒sleep(20);echo "休眠完成,开始取验证码...\n";$code = file_get_contents("code.txt");echo "验证码成功取出:$code\n";echo "正在准备模拟登录...\n";$post = "username=maben&pwd=hahahaha&verifycode=$code";$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_HEADER, false);curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);curl_setopt($curl, CURLOPT_POSTFIELDS, $post);curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);$result=curl_exec($curl);curl_close($curl);//这一块根据自己抓包获取到的网站上的数据来做判断if(substr_count($result,"登录成功")){ echo "登录成功\n";}else{ echo "登录失败\n"; exit;}//OK,开始做你想做的事吧。。。。。

PHP CURL POST模拟用户登录了希望可以给出具体的代码,并简要解释下代码

你可以看下是否有其它的http header没有模拟,比如Referer和User-Agent是否都能模拟浏览器的值,一个完整的请求是类似于这样的:

GET /home/pack/data/content?id=31,2399,13,30&asyn=1&t=0.0343975298934&_req_seqid=0xa982225f0637c78a HTTP/1.1

Accept: */*

Accept-Language: zh-cn

Referer: /

x-requested-with: XMLHttpRequest

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; BTRS123401; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; MS-RTC LM 8)

Host:

Connection: Keep-Alive

Cookie: XCXXXXX

curl怎实现模拟登入php

$url = “localhost/post_output.php”;

$post_data = array (

“foo” => “bar”,

“query” => “Nettuts”,

“action” => “Submit”

);

$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);

echo $output;

结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。