Get captcha using Curl and send data and grab results

前端 未结 1 854
无人及你
无人及你 2020-12-28 11:08

So bascially am new to php. I want to get catpcha from a website. Then I wanna show it on my webpage and send a small post request and get the results. The site I am talking

相关标签:
1条回答
  • 2020-12-28 11:41

    This was my question on SO for which i didn't get answer.However, i have the answer now.This is the perfect example that you want. I retrieved the captcha using the captcha-url in the source code of the webpage which your site also contains. Extract that image from captcha-url using between(). Then maintain the session and send the request again.The imp. part is that you have to submit the data to the URL of the form, not the page.

    <?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', '">');
            return 'https://academics.vit.ac.in/student/captcha.asp' . $code;
    
        }
    
        function rahul()
        {
            $capth=htmlspecialchars($_POST['code']);
    
            echo $capth;
    
            $username="xyz"; 
            $password="abc"; 
            $url=url of the form in which you want to submit your data; 
            $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>
    
    0 讨论(0)
提交回复
热议问题