检索验证码和登录使用卷曲php

问题描述:

我正在一个项目。所以我必须从下面提到的网站获取验证码。用户将提交验证码和他的登录凭据,然后我必须提取数据(为了用户的利益)。但是在我提交验证码之后,只需登录页面出现,什么都不会发生。检索验证码和登录使用卷曲php

我已经尝试过这与多个网站,只是登录页面出现。我知道如何在登录后获取数据,但验证码确实是直接从卷曲给人一种头痛

<?php 

$cookie="cookie.txt"; 
function open($url) 
{ 

    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_URL,$url); 
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/2.0.0.2'); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_COOKIE, 1); 
    curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie); 
    curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    curl_setopt ($ch, CURLOPT_REFERER, $url); 
    $result = curl_exec($ch); 
    curl_close($ch); 

    return $result; 
} 

function between($string, $start, $end) 
{ 
    $out = explode($start, $string); 

    if(isset($out[1])) 
    { 
     $string = explode($end, $out[1]); 
     echo $string[0]; 
     return $string[0]; 
    } 

    return ''; 
} 

function get_captcha() 
{ 
    $url = 'https://academics.vit.ac.in/student/stud_login.asp'; 

    $open = open($url); 

    $code = between($open, '<img src='https://academics.vit.ac.in/student/captcha.asp', '">'); 

    // echo 'https://academics.vit.ac.in/student/captcha.asp' . $code; 

    return 'https://academics.vit.ac.in/student/captcha.asp' . $code; 
    //return ; 

} 


function rahul() 
{ 
    $capth=htmlspecialchars($_POST['code']); 

    echo $capth; 

    $username="xyz"; 
$password="abc"; 
$url="https://academics.vit.ac.in/student/stud_login.asp"; 
$cookie="cookie.txt"; 
$veri=$capth; 

$com="Login"; 

$postdata = "regno=".$username."&passwd=".$password."&vrfcd=".$veri."&submit=".$com; 

$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie); // <-- add this line 
curl_setopt ($ch, CURLOPT_REFERER, $url); 

curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata); 
curl_setopt ($ch, CURLOPT_POST, 1); 
$result = curl_exec ($ch); 

echo $result; 


$data = curl_exec($ch); 

} 




?> 


<html> 
<body> 
<form action="" method="post"> 
<img src="<?php echo get_captcha(); ?>" border="0" /><br /> 
<input type="text" name="code" value="<?= isset($_POST['code']) ? htmlspecialchars($_POST['code']) : '' ?>" /><br /> 
<input type="submit" name="submit" value="submit"/> 
</form> 

<?php 


if(isset($_POST['submit'])) { 
rahul(); 
} 
?> 
</body> 
</html> 

在这种情况下,开放capcthca图像和二进制代码返回。

<?php 
$cookie='cookie.txt'; 
if(!file_exists($cookie)){ 
     $fh = fopen($cookie, "w"); 
     fwrite($fh, ""); 
     fclose($fh); 
} 
$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
    curl_setopt($ch, CURLOPT_URL, "https://academics.vit.ac.in/student/captcha.asp"); 
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE); 
    curl_setopt($ch, CURLOPT_COOKIE,1);   
    curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie); 
    curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie);  
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    $result = curl_exec($ch); 
curl_close($ch); 
$ImageCaptcha=base64_encode($result); 
?> 

观看图片使用Base64编码

<?php echo '<img src="data:image/jpeg;base64,'.$ImageCaptcha.'">'; ?> 

我已经测试此代码&这是为我工作