Мне нужно спарсить одну информацию, но чтобы получить к ней доступ надо ввести логин и пароль. Я хочу написать скрипт, чтобы он вводил логин, пароль, авторизовывался, а потом парсил инфу. Но проблема в авторизации. Я делал так: PHP: <form method=post> <input type=text name=parol value="123456"> </form> <script type="text/javascript">document.forms[0].submit()</script> Так я получал доступ к нужной информации, но на страницу заходил сам браузер, а мне нужно, чтобы это делал только скрипт.
PHP: curl_setopt ($curl, CURLOPT_POST, 1); curl_setopt ($curl, CURLOPT_POSTFIELDS, 'login=mylogin&password=mypassword');
вообщето для каждого случая надо снифать что отправляет и принимает ваш браузер и сервер, но самая распостраненная авторизация с курлом примерно вот PHP: function curl($url,$post) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_REFERER,$url); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5"); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt'); $result = curl_exec($ch); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 0); curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'/cookie.txt'); curl_setopt($ch,CURLOPT_POSTFIELDS,$post); $result = curl_exec($ch); curl_close($ch); return $result; }; надеюсь не надо обьяснять как пользоваться этой функцией, иначе я просто потерял время)) и мне было бы легче написать готовое решение))))
Библиотека Curl далеко не везде есть, по своему опыту советую использовать сокеты(fsockopen() или socket_create()), желательно хоть немного знать протокол HTTP чтобы отправить POST запрос. После отправки пост запроса с нужными данными советую использовать регулярные выражения дабы вытащить нужные данные из ответа, но тут попроще, напрмер: PHP: preg_match_all("|Balance: (.*)<|", $content, $out); if (count($out[0]) != 0) { foreach($out[0] as $str) { echo trim($str)."<br>"; flush(); } }