加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php使用curl模拟登录带验证码的网站[开发篇]

发布时间:2020-05-25 03:35:26 所属栏目:PHP 来源:互联网
导读:需求是这样的,需要登录带验证码的网站,获取数据,但是不可能人为一直去记录数据,想通过自动采集的方式进行,如下是试验出来的结果代码!有需要的可以参考下!?phpnamespace HomeController;use ThinkController;class LoginController extends Controller

需求是这样的,需要登录带验证码的网站,获取数据,但是不可能人为一直去记录数据,想通过自动采集的方式进行,如下是试验出来的结果代码!有需要的可以参考下!

(->cookieName => ->cookiePathFile[] = ROOT_PATH . ->cookiePath . ->cookieName[] . '_xxx.txt'</span><span style="color: #008000;"&gt;/*</span><span style="color: #008000;"&gt;* * 登录xxx </span><span style="color: #008000;"&gt;*/</span> <span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;function</span><span style="color: #000000;"&gt; pc28Login() { </span><span style="color: #800080;"&gt;$username</span> = I('username'<span style="color: #000000;"&gt;); </span><span style="color: #800080;"&gt;$password</span> = I('password'<span style="color: #000000;"&gt;); </span><span style="color: #800080;"&gt;$verifyCode</span> = I('verify'<span style="color: #000000;"&gt;); </span><span style="color: #800080;"&gt;$loginData</span> = <span style="color: #0000ff;"&gt;array</span><span style="color: #000000;"&gt;( </span>'__VIEWSTATE' => '/wEPDwUKMTU0MzAzOTU4NmQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFDExvZ2luX1N1Ym1pdL/yae69NsY163G3yuP0lxjz8oXu',<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;不把参数补全可能会不被响应哦</span> '__VIEWSTATEGENERATOR' => 'DC42DE27','txt_UserName' => <span style="color: #800080;"&gt;$username</span>,'txt_PWD' => <span style="color: #800080;"&gt;$password</span>,'txt_VerifyCode' => <span style="color: #800080;"&gt;$verifyCode</span>,'SMONEY' => 'ABC','Login_Submit.x' => '52','Login_Submit.y' => '19',<span style="color: #000000;"&gt; ); </span><span style="color: #800080;"&gt;$getBack</span> = <span style="color: #800080;"&gt;$this</span>->_cookieRequest('http:///noLogin.aspx',<span style="color: #800080;"&gt;$loginData</span>,<span style="color: #0000ff;"&gt;false</span>,<span style="color: #0000ff;"&gt;true</span><span style="color: #000000;"&gt;); </span><span style="color: #0000ff;"&gt;if</span>(<span style="color: #008080;"&gt;preg_match</span>('/<div[^<div]*?ids*=s*['"]{1}div_msg['"]{1}.*?>(.*?)</div>/s',<span style="color: #800080;"&gt;$getBack</span>,<span style="color: #800080;"&gt;$match</span><span style="color: #000000;"&gt;)){ </span><span style="color: #0000ff;"&gt;echo</span> 'matchedrn'<span style="color: #000000;"&gt;; </span><span style="color: #008080;"&gt;print_r</span>(<span style="color: #800080;"&gt;$match</span><span style="color: #000000;"&gt;); }</span><span style="color: #0000ff;"&gt;else</span><span style="color: #000000;"&gt;{ </span><span style="color: #0000ff;"&gt;echo</span> <span style="color: #800080;"&gt;$getBack</span>,'<br />'<span style="color: #000000;"&gt;; </span><span style="color: #800080;"&gt;$paramsFull</span> = <span style="color: #008080;"&gt;parse_url</span>(<span style="color: #800080;"&gt;$getBack</span><span style="color: #000000;"&gt;); </span><span style="color: #008080;"&gt;parse_str</span>(<span style="color: #800080;"&gt;$paramsFull</span>['query'],<span style="color: #800080;"&gt;$paramsFull</span>['parsedQuery'<span style="color: #000000;"&gt;]); </span><span style="color: #0000ff;"&gt;if</span>(!<span style="color: #0000ff;"&gt;empty</span>(<span style="color: #800080;"&gt;$paramsFull</span>['parsedQuery']['Warn'<span style="color: #000000;"&gt;])) { </span><span style="color: #800080;"&gt;$msg</span> = "您好,欢迎来P,请先登录。"<span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;switch</span> (<span style="color: #800080;"&gt;$paramsFull</span>['parsedQuery']['Warn'<span style="color: #000000;"&gt;]) { </span><span style="color: #0000ff;"&gt;case</span> '2': <span style="color: #800080;"&gt;$msg</span> = '您输入的验证码错误,请重试'<span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;break</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;case</span> '3': <span style="color: #800080;"&gt;$msg</span> = '该帐号不存在,还没帐号?'<span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;break</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;case</span> '5': <span style="color: #800080;"&gt;$msg</span> = '账户已注销'<span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;break</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;case</span> '6': <span style="color: #800080;"&gt;$msg</span> = '密码错误,如果连续错误3次半小时内不能登录!'<span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;break</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;case</span> '20': <span style="color: #800080;"&gt;$msg</span> = '今日密码错误3次及以上,请于半小时后再来登录!'<span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;break</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;case</span> '21': <span style="color: #800080;"&gt;$msg</span> = '今日您所在IP的所有帐号密码错误9次以上,请于半小时后再来登录!'<span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;break</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;case</span> '22': <span style="color: #800080;"&gt;$msg</span> = '登录失败,您所在IP今日登录的帐号过多!'<span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;break</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;case</span> '23': <span style="color: #800080;"&gt;$msg</span> = '登录失败,验证码失效!'<span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;break</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;case</span> '32': <span style="color: #800080;"&gt;$msg</span> = '该帐号已经绑定其他xx帐号!'<span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;break</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;case</span> '33': <span style="color: #800080;"&gt;$msg</span> = '一台电脑一天只能注册一个帐号!'<span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;break</span><span style="color: #000000;"&gt;; } </span><span style="color: #800080;"&gt;$this</span>->error(<span style="color: #800080;"&gt;$msg</span>,'',5<span style="color: #000000;"&gt;); }</span><span style="color: #0000ff;"&gt;else</span><span style="color: #000000;"&gt;{ </span><span style="color: #800080;"&gt;$_SESSION</span>['user_id'] = '123456'; <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;登录设置session</span> <span style="color: #800080;"&gt;$this</span>->success('登录P网站成功',U('Index/index'),5<span style="color: #000000;"&gt;); } } } </span><span style="color: #008000;"&gt;/*</span><span style="color: #008000;"&gt;* * 获取验证码 </span><span style="color: #008000;"&gt;*/</span> <span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;function</span><span style="color: #000000;"&gt; getVerifyCode() { </span><span style="color: #800080;"&gt;$img</span> = <span style="color: #800080;"&gt;$this</span>->_cookieRequest('http:///VerifyCode_Login.aspx?id=' . <span style="color: #008080;"&gt;rand</span>(10000,999999),<span style="color: #0000ff;"&gt;null</span>,<span style="color: #0000ff;"&gt;true</span>,1<span style="color: #000000;"&gt;); </span><span style="color: #0000ff;"&gt;echo</span> <span style="color: #800080;"&gt;$img</span><span style="color: #000000;"&gt;; } </span><span style="color: #008000;"&gt;/*</span><span style="color: #008000;"&gt;* * 删除cookie </span><span style="color: #008000;"&gt;*/</span> <span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;function</span><span style="color: #000000;"&gt; clearCookie() { </span><span style="color: #0000ff;"&gt;for</span>(<span style="color: #800080;"&gt;$i</span> = 0; <span style="color: #800080;"&gt;$i</span> <<span style="color: #008080;"&gt;count</span>(<span style="color: #800080;"&gt;$this</span>->cookieName); <span style="color: #800080;"&gt;$i</span>++<span style="color: #000000;"&gt;) { </span><span style="color: #008080;"&gt;setcookie</span>(<span style="color: #800080;"&gt;$this</span>->cookieName[<span style="color: #800080;"&gt;$i</span>],<span style="color: #008080;"&gt;time</span>() - 3600<span style="color: #000000;"&gt;); }

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读