singlepost

Скачать защищенную авторизацией страницу (PHP) << На главную или назад  

Всем привет. Вот с помощью этого скрипта
<?php
$da2=file_get_contents("//www.sait.ru");
echo $da2;
echo htmlspecialchars($da2);
?>
По идее на экране появиться сама страница, а ниже ее html код,
Но на сайте есть авторитизация, как сделать чтоб на экране появилась страница, но уже авторитизированного пользователя, незнаю, может надо что – то как -то передать?? Если я в чем то ошибаюсь поправте =))

17 ответов в теме “Скачать защищенную авторизацией страницу (PHP)”

  1. 16
    Цесарь Петр ответил:

    class megoparser {
    var $host;// куда коннектимся
    var $action;// параметр action формы авторизации
    var $login; // имя поля с логином
    var $password;// имя поля с паролем
    var $hiddentext;// имя поля с скрытым текстом, используется для проверки авторизации
    var $loginfield;// значение поля логина для формы (ваш логин)
    var $passwordfield; // значение поля пароля для формы (ваш пароль)
    var $hiddentextfield; // значение поля c скрытым текстом

    function megoparser($host, $action, $login, $password, $hiddentext, $loginfield, $passwordfield, $hiddentextfield) {
    $this->host= $host;
    $this->action= $action;
    $this->login = $login;
    $this->password= $password;
    $this->hiddentext= $hiddentext;
    $this->loginfield= $loginfield;
    $this->passwordfield = $passwordfield;
    $this->hiddentextfield = $hiddentextfield;
    }

    function login() {
    $this->fp = fsockopen($this->host, 80);
    if($this->fp) {
    $this->zapr = $this->login."=".$this->loginfield."&".$this->password."=".$this->passwordfield."&".$this->hiddentext."=".$this->hiddentextfield;
    fputs($this->fp, "POST ".$this->action." HTTP/1.1\nHost: ".$this->host."\nUser-Agent: Mozilla/4.5 [en] (Win95; I)\nReferer: //".$this-&gt;host."/\nContent-Type: application/x-www-form-urlencoded\nContent-length: ".strlen($this->zapr)."\r\n\r\n".$this->zapr);
    while(!feof($this->fp)) $this->content .= fgets($this->fp);
    fclose($this->fp);
    } else {
    echo "Ошибка сокета ".$this->host;
    exit();
    }
    }

    function session_parce($session_name) {
    $this->login();
    @preg_match_all("@".$this->session_name."=(.*);@sU", $this->content, $this->sessionid);
    $this->sessionid = $this->sessionid[1][0];
    if($this->sessionid == "") {
    echo "<b>session_parce:</b> не удалось получить идентификатор сессии";
    exit();
    } else {
    return $this->sessionid;
    }
    }

    function loadpage($page, $session_name) {
    $this->page = $page;
    if($this->session_id== "") {
    $this->session_name = $session_name;
    $this->sessionid= $this->session_parce($this->session_name);
    $this->content= "";
    }

    $this->fp = fsockopen($this->host, 80);

    if($this->fp) {
    fputs($this->fp, "GET ".$this->page." HTTP/1.1\nHost: ".$this->host."\nUser-Agent: Mozilla/4.5 [en] (Win95; I)\nReferer: //".$this-&gt;host."/\nCookie: ".$this->session_name."=".$this->sessionid."; domain=".$this->host."; path=/;\n\n");
    while(!feof($this->fp)) $this->content .= fgets($this->fp);
    fclose($this->fp);
    } else {
    echo "<b>Loadpage:</b> ошибка сокета ".$this->host;
    exit();
    }
    echo $this->content;
    }
    }

    $parser = new megoparser("www.booksgid.com",

  2. 15
    Цесарь Петр ответил:

    $parser = new megoparser("www.booksgid.com",
    "/",
    "login_name",
    "login_password",
    "login",
    "Dead",
    "7ftcv6xws",
    "submit");

    $parser->loadpage("/technology/18177-katalog-shin-i-diskov-jekshin.html", "PHPSESSID");

    кусок обрезалсо

  3. 14
    Артем Карпенко ответил:

    в приведенном выше скрипте куки хранятся в файле "d:/www/html/testing/сооkiеjar"и считываются оттуда по мере необходимости функциями курла

  4. 13
    Den Mansurov ответил:

    Ну я данные смог передать методом POST, ну чтоб в контакте авторитизироваться не получается, МЕНЯ интересует вопрос как куки передать, ну там Cookie: а дальше чтог? Копировать тот куки который на компе, и вставлять???

  5. 12
    Артем Карпенко ответил:

    JavaSсript не нужен, воткод на пхп (тестирован на 5.2.1):

    <?php

    // а ТЫ заинклюдил php_curl.dll ?!!

    function authorize($login, $pass){
    $handle=curl_init();

    $post=array();
    $post['email']=$login;//vkontakte.ru пользует email как логин
    $post['pass']=$pass;

    curl_setopt($handle, CURLOPT_POST, true);
    curl_setopt($handle, CURLOPT_URL, "//vkontakte.ru/login.php");
    curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($post));
    curl_setopt($handle, CURLOPT_HEADER, true);//чтобы потом получить id
    curl_setopt($handle, CURLOPT_COOKIEJAR, "d:/www/html/testing/сооkiеjar");//тут храним куки
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
    $site_contents=curl_exec($handle);
    curl_close($handle);
    return $site_contents;
    }

    function process($url){
    $handle=curl_init();
    curl_setopt($handle, CURLOPT_URL, $url);
    curl_setopt($handle, CURLOPT_COOKIEJAR, "d:/www/html/testing/сооkiеjar");
    curl_setopt($handle, CURLOPT_COOKIEFILE, "d:/www/html/testing/сооkiеjar");
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
    $site_contents=curl_exec($handle);
    curl_close($handle);
    return $site_contents;
    }

    $login="some@some.some";
    $pass="qwerty";

    $contents=authorize($login, $pass);//достаточно вызвать один раз в самом начале работы

    /*
    из заголовков в начале $contents извлекаете айдишник (на него будет переадресация через Location)
    */
    $id="id1234567";

    $contents=process("//vkontakte.ru/".$id);
    echo $contents;

    // пысы
    // вообще такие вещи элементарно пишутся после получаса чтения
    // каментов на пхп.нет
    ?>

  6. 11
    Владимир Павленко ответил:

    тут помимо пхп задействован джаваскрипт так что лучше куки… если не подойдет и тема будет актуальна то в августе мне напиши я тебе напишу скрипт, щас нет времени =(

  7. 10
    Артем Карпенко ответил:

    а что, курлы не подошли?

  8. 9
    Ванько Родригез ответил:

    Купи передаются по HTTP вместе с запросом. Залогинься браузером, потом выдери из него куки Контакта и вставь в скрипт. Тонкости вставляния в скрипт – на php.net.

  9. 8
    Den Mansurov ответил:

    Давате тогда рассмотрим тот случий, если нужно сайт контакт загрузить, и чтоб я был уже авторитизирован???

  10. 7
    Алексей Вишняков ответил:

    Курлы решат все твои проблемы=)))

  11. 6
    Артем Карпенко ответил:

    посмотри здесь
    //ua2.php.net/manual/ru/book.curl.php

  12. 5
    Ванько Родригез ответил:

    Учесть надо, что передача может идти POST-ом.

  13. 4
    Владимир Павленко ответил:

    какой адрес авторизации на сайте? во тего и впиши $da2=file_get_contents("//www.sait.ru");
    только допиши свои данные $da2=file_get_contents("//www.sait.ru/login.php?login=введенное значение логина&pas=введенное значение пароля");

  14. 3
    Ванько Родригез ответил:

    А я вообще никак в ПХП :) Какой-нибудь там getCookie(), setCookie()…

  15. 2
    Den Mansurov ответил:

    Ну если авторитизация с помощью куки, то как будет выглядить код, простоя я ещё слаб в ПХП =), подскажите плиз

  16. 1
    Ванько Родригез ответил:

    Скриптом отправить данные для авторизации на сервер. Можно забрать куки и прикладывать их потом при обращении к закрытой странице. Но может работать и без них, зависит от механизма авторизации.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.