Эта тема на forum.dklab.ru


irus: Нужна помощь...по новостям
Нужна помощь вот в чем.
Есть сайт новостей, там зарегистрировался. написал скрипт который выдергивает новости от туда(заголовки доступны без авторизации). А когда хочу содрать текст новости то необходимо авторизоваться. Как сделать подскажите?!!
Заранее благодарю Нужна помощь вот в чем.
Есть сайт новостей, там зарегистрировался. написал скрипт который выдергивает новости от туда(заголовки доступны без авторизации). А когда хочу содрать текст новости то необходимо авторизоваться. Как сделать подскажите?!!
Заранее благодарю
Ant:
Перенесено из форума: Склад готовых решений :: PHP.
Перенесено в форум: Разное :: PHP.
Евгений Галашин:
http://citforum.ru/howto/smart-questions-ru.shtml

Для начала точно сформулируйте вопрос.
Олег_Муравейко:
1) Воровать материалы не хорошо.
2) Если уж очень хочется, то

function fetch()
{
$fp = @fsockopen ($this->host, $this->port);

if(!$fp)
{
$this->header["status"]='none connect';
}else{

$header_done=false;

$request = "GET ".$this->path." HTTP/1.0\r\n";
$request .= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)\r\n";
$request .= "Host: ".$this->host."\r\n";
$request .= "Connection: Close\r\n\r\n";
$return = '';

fputs ($fp, $request);

$line = fgets ($fp, 128);
$this->header["status"] = $line;

while (!feof($fp))
{
if($header_done)
{
$line = fread ( $fp, 1024 );
$this->content .= $line;
}
else
{
$line = fgets ($fp, 128);
if($line == "\r\n")
{ $header_done=true;}
else
{
$data = explode(": ",$line);
$this->header[$data[0]] = $data[1];
}
}
}

fclose ($fp);
}
}



3) приведенный фрагмент в части $request модифицировать , собрав запрос от имени авторизованого пользователя
4) как сделать правильный $request не спрашивайте, не отвечу в силу п.1.
Юрий Насретдинов:
А когда хочу содрать текст новости то необходимо авторизоваться.
Если авторизация идёт по cookies, то нужно забирать страницу вручную, причём передавать заголовок Cookie: в запросе соотвествующего содержания. Часто можно заменить cookies на параметры, передаваемые с помощью GET, если скрипт использует register_globals On (а такое бывает довольно часто).
Ant:
Эх, учите товарищи Perl. Для таких случаев модуль LWP::UserAgent прекрасное решение. Пример (не полный):

my $ua = LWP::UserAgent->new;
$ua->cookie_jar(HTTP::Cookies->new(file => "temp.txt", autosave => 1, ignore_discard => 1));

my $req = POST 'http://my.dot.tk/cgi-bin/login02.taloha',
[ fldemail => $CONF{ 'EMAIL' }, fldpassword => $CONF{ 'PASS' } ];
$ua->request($req)->as_string;

$req = POST 'http://my.dot.tk/cgi-bin/rnt035.taloha',
[
fldrefererurl => "http://".$ip,
flddescription => "some",
fldshortdescription => "",
fldlanguagenr => "16",
fldmaincategorynr => "10",
flddomainnr => $CONF{ 'DOMAINID' },

fldkeyword0 => "some",
fldkeyword1 => "some",
fldkeyword2 => "some",
fldkeyword3 => "some",
fldkeyword4 => "some",
fldkeyword5 => "some",
fldkeyword6 => "some",
fldkeyword7 => "some",

fldsubcategorynrs => "510"
];

$ua->request($req)->as_string;


И все дела. (-:
Юрий Насретдинов:
Для таких случаев модуль LWP::UserAgent прекрасное решение.
А для PHP модуль cURL... Не обольщайся особо :). Всё равно ручками ИМХО удобнее и более гибко
Ant:
Всё равно ручками ИМХО удобнее и более гибко
Не-а. Модули для того и пишутся. Но не будем флейм разводить.
Юрий Насретдинов:
Но не будем флейм разводить.
Ок.

Эта тема на forum.dklab.ru