日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

CURL模拟登录

發布時間:2025/7/14 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CURL模拟登录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

登錄原理

驗證碼通過session保存并驗證,而session通過cookie獲取SSID

一、定義Cookie存儲路徑
必須使用絕對路徑

$cookie_jar = dirname(__FILE__)."/this_test.cookie";//指定存儲路徑


二、獲取Cookie
cookie存入文件

$url = "http://web.mall.com/ ";??? //用來測試的本地網站的url

$ch = curl_init();??? //開啟curl連接

//curl配置

curl_setopt($ch, CURLOPT_URL, $url);??? //寫入url

curl_setopt($ch, CURLOPT_HEADER, 0);??? //是否有寫入頭信息需要寫入=>false

curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);??? ?

??????????? //CURLOPT_RETURNTRANSFER設置為1 $content 有請求的返回值

????//當設置為0$content沒有返回值,直接輸出請求的內容

curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie_jar);??? //臨時建立的cookie文件路徑

$content = curl_exec($ch);??? //執行curl,并把結果返回給一個字符串

curl_close($ch);??? //關閉curl連接


三、把剛剛得到的cookie用來獲取驗證碼圖片

登陸界面 >表單中驗證碼相關字段與函數如下,可知驗證碼的地址

<inputtype="text"???? name="username"? class="username" placeholder="請輸入您的用戶名!"/>

<inputtype="password"?name="pwd"???? class="password"placeholder="請輸入您的用戶密碼!"/>

<inputtype="text" name="checkCode" class="Captcha"placeholder="請輸入驗證碼!">

<img class='pic'src="/login/checkpic"οnclick="this.src='/login/checkpic?aa='+Math.random()" />

<buttontype="button" οnclick="form_login()"id="login_submit" >登錄</button>

functionform_login(){

??? $(function(){

??????? $.ajax({

??????????? url:"/login/checkUser",

???????????data:$("#login_Data").serialize(),

??????????? dataType:"json",

??????????? type:"post",

??????????? success:function(msg){

??????????????? if(msg.err=="ok"){

???????????????????window.location.href="/";

??????????????? }else{

??????????????????? alert(msg.err);

??????????????? }

??????????? }

??????? });//ajax結束

??? });

}

//可知驗證碼圖片地址為http://web.mall.com/login/checkpic //現在取出驗證碼圖片 $verify_code_url="http://web.mall.com/login/checkpic"; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $verify_code_url); curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_jar); 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);

然后通過表單把用戶名、密碼、驗證碼傳入登陸驗證的curlphp文件中去
四、POST提交到登陸驗證的地址

$check_url=”http://web.mall.com/login/CheckUser”;//驗證帳號的地址

$post = array(

??????????? 'username'=> $_POST['username'] ,

??????????? 'pwd'?????? ??=> $_POST['pwd'],

??????????? 'checkCode'=>$_POST['checkCode']

??????????? );

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,"http://1.2.3.4/loginstudent.action");

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch, CURLOPT_POSTFIELDS,$post);

curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie_jar);

$result=curl_exec($ch);

curl_close($ch);

五、到指定頁面獲取數據

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,"http://1.2.3.4/accountcardUser.action");

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,0);??????? //直接輸出頁面

curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie_jar);

$html=curl_exec($ch);

curl_close($ch);

?

六、獲取完所需要的數據后,清理cookie文件
@unlink($cookie_file);


下面是我寫了個對應案例

①【顯示登陸框】index.php

<pre name="code" class="php"><span style="font-size:18px;background-color: rgb(255, 204, 51);"><?php $cookie_jar = dirname(__FILE__)."/this_test.cookie";//指定存儲路徑 $url = "http://web.mall.com/"; //我們以模擬登陸本地網址為例 $ch = curl_init(); //開啟curl連接 //curl配置 curl_setopt($ch, CURLOPT_URL, $url); //寫入url curl_setopt($ch, CURLOPT_HEADER, 0); //是否有寫入頭信息需要寫入=>false curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //當CURLOPT_RETURNTRANSFER設置為1時 $content 有請求的返回值//當設置為0是$content沒有返回值,直接輸出請求的內容 curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar); //臨時建立的cookie文件路徑 $content = curl_exec($ch); //執行curl, 并把結果返回給一個字符串 curl_close($ch); //關閉curl連接$now_url="http://".$_SERVER["HTTP_HOST"].$_SERVER['REQUEST_URI'];//獲取當前目錄網址 require 'get_verify_code.php'; echo <<<eof </span><span style="font-size:18px;background-color: rgb(0, 204, 204);"><script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script> <script type="text/javascript" > function changeCode(){//用jq的ajax方法,切換驗證碼$.ajax({url:"{$now_url}get_verify_code.php?rand="+Math.random(),type:"post",success:function(msg){var new_src="{$now_url}verifyCode.jpg?rand="+Math.random();$("#verify_code").attr("src",new_src);}});} </script></span><span style="font-size:18px;background-color: rgb(255, 204, 51);"> </span><span style="font-size:18px;background-color: rgb(51, 255, 255);"> <center><form action="result.php" method="post"><input type="text" name="username" placeholder='請輸入用戶名'><br/><input type="password" name="password" placeholder='請輸入密碼'><br/><img src="verifyCode.jpg" id="verify_code" οnclick='changeCode();' width="150px" height="34px"><br/><input type="text" name="checkCode" placeholder='請輸入驗證碼'><br/><input type="hidden" name="cookie_jar" value="{$cookie_jar}" ><br/><input type="submit" value="提交"></form></center> </span><span style="font-size:18px;background-color: rgb(255, 204, 51);">eof;</span><span style="font-size:24px;color: rgb(51, 102, 102);"> </span> <span style="font-size:18px;background-color: rgb(255, 204, 51);"><img src="https://img-blog.csdn.net/20160725162519026?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><img src="https://img-blog.csdn.net/20160725162542624?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" /> </span>

②【獲取驗證碼】get_verify_code.php

<?php $verify_code_url="http://web.mall.com/login/checkpic"; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $verify_code_url); curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_jar); 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); ?>

③【輸出已登錄的頁面信息】result.php

<?php $check_url="http://web.mall.com/login/CheckUser";//驗證帳號的地址 $cookie_jar=$_POST['cookie_jar']; $post = array( 'username' => $_POST['username'] , 'pwd' => $_POST['pwd'], 'checkCode'=> $_POST['checkCode'] ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $check_url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_POST, 1);// post數據 curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar); $result=curl_exec($ch); curl_close($ch);//獲取轉跳頁面的數據 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://web.mall.com/personal"); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER,0); //直接輸出頁面 curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar); $html=curl_exec($ch); curl_close($ch); $unlink($cookie_jar);


總結

以上是生活随笔為你收集整理的CURL模拟登录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。