Как CURL внедрить COOKIE в удаленный сайт - PullRequest
0 голосов
/ 27 ноября 2011

я не могу вставить cookie на странице 2, некоторые советы, пожалуйста.

С помощью этого метода я загружаю страницу 1 с catcha, содержащую файл cookie, и записываю его в cookie.txt:

define('COOKIE', './cookie.txt');
define('CAPTCHA', './captcha.png');

function saveCaptcha() {
$header = array('Content-Type: image/png');
$ch = curl_init();
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
curl_setopt($ch,CURLOPT_COOKIESESSION, true);
curl_setopt($ch,CURLOPT_COOKIEJAR, COOKIE);
curl_setopt($ch,CURLOPT_URL,'http://example.com/captcha/securimage_show.php');
curl_setopt($ch,CURLOPT_PROXY,'127.0.0.1:8118');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,0);
$fileContents = curl_exec($ch);
curl_close($ch);
$newImg = imagecreatefromstring($fileContents);
return imagepng($newImg, "CAPTCHA",9);
}

$fr = filesize(COOKIE);
echo COOKIE . ': ' . $fr . ' bytes';
if ($fr <= 50) saveCaptcha();

Cookie успешно сохранен и записан в cookie.txt, теперь мы пропустили капчу в форме:

<form action="index.php" method="post">
    <input type="hidden" name="p" value="login" />
    <div class="line">
        <label>Captcha</label>
        <img src="CAPTCHA" border="0" />
    </div>
    <div class="line">
        <label>&nbsp;</label>
        <input type="text" name="captcha" value=""/>                
    </div>
    <div class="line">
        <label>&nbsp;</label>
        <input type="submit" value="Login" />
    </div>
</form>  

Теперь мы извлекаем капчу с помощью $ _POST и загружаем страницу 2 с нашим cookie.txt:

    //extract data from the post
    extract($_POST);

    //set POST variables
    $url = 'http://example.com/index.php';

        //open connection
        $ch = curl_init();
        //set the url, number of POST vars, POST data
        curl_setopt($ch,CURLOPT_COOKIEFILE, 'cookie.txt');
        curl_setopt($ch,CURLOPT_COOKIESESSION, true);
        curl_setopt($ch,CURLOPT_PROXY, '127.0.0.1:8118');
        curl_setopt($ch,CURLOPT_URL, $url);
        curl_setopt($ch,CURLOPT_POSTFIELDS, 'p=login&user=myuser&pass=123qwe&captcha='.$_POST['captcha'].'&submit=Login');
        curl_setopt($ch,CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
        curl_setopt($ch,CURLOPT_REFERER, 'http://example.com/');

        //execute post
        $result = curl_exec($ch);

        //close connection
        curl_close($ch);

        $fa = fopen(COOKIE, 'w'); 
        @fwrite(COOKIE,'');
        fclose($fa);

Страница2 загружена, но без файла cookie.Некоторые советы, возможно, вы увидели проблему ((Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...