1

Задачка на "подумать".
Вот есть у меня блог на blogger.com (свой блог на своём хостинге не предлагать, про такой вариант знаю, может, когда-нить так и сделаю, там вопросы бекапа просто отпадают).
Вот не доверяю гуглу, хочу сделать регулярное резервное копирование. Чтобы "сделал и забыл".
Как вообще можно сказать текущий снимок блога? Есть ссылка - http://draft.blogger.com/feeds/*много цифры*/archive
Несмотря на страшные цифры - она не меняется по идее, постоянна. Но не уверен, что она есть всегда, может, создаётся предварительно скриптом.

Если просто браузером скачать - результат вполне предсказуем. Если разлогиниться на гугле и скормить ссылку браузеру - не работает. Вывод такой - требуется аутентификация.
Хотелось бы использовать, к примеру, wget, и закронить его, чтобы каждую неделю скачивал снимок куда-нить (весит он немного совсем). Пробовал указывать опции что-то вроде --user --password - не получилось.

Вообще реально такое сделать, или там у гугла какая-то хитрая привязка?

2

А как там скачивается архив блога? Ссылка?
Могу посоветовать использовать скрипт, с wget, bash, python не знаю как, а на php через сокеты. Удаленная авторизация, сам такое не делал, но вот нашел скрипт.

function PostRequest($url, $referer, $_data) {
 
    // convert variables array to string:
    $data = array();    
    while(list($n,$v) = each($_data)){
        $data[] = "$n=$v";
    }    
    $data = implode('&', $data);
    // format --> test1=a&test2=b etc.
    
    // parse the given URL
    $url = parse_url($url);
    if ($url['scheme'] != 'http') { 
        die('Only HTTP request are supported !');
    }
    
    // extract host and path:
    $host = $url['host'];
    $path = $url['path'];
    
    // open a socket connection on port 80
    $fp = fsockopen($host, 80);
    //echo $path;
    // send the request headers:
    fputs($fp, "POST $path HTTP/1.1\r\n");
    fputs($fp, "Host: $host\r\n");
    //fputs($fp, "Referer: $referer\r\n");
    fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
    fputs($fp, "Content-length: ". strlen($data) ."\r\n");
    fputs($fp, "Connection: close\r\n\r\n");
    fputs($fp, $data);
    
    $result = ''; 
    while(!feof($fp)) {
        // receive the results of the request
        $result .= fgets($fp, 128);
    }
    
    // close the socket connection:
    fclose($fp);
    
    // split the result header from the content
    $result = explode("\r\n\r\n", $result, 2);
    
    $header = isset($result[0]) ? $result[0] : '';
    $content = isset($result[1]) ? $result[1] : '';
    
    // return as array:
    return array($header, $content);
}

// submit these variables to the server:
$data = array(
    'login' => 'YOUR_LOGIN',
    'passw' => 'YOUR_PASSWORD'
);
  
// send a request to example.com (referer = jonasjohn.de)
list($header, $content) = PostRequest("URL","",$data);
 
// print the result of the whole request:
print $header;
print $content;
 
//  --> prints the headers
На мясокомбинате я работаю свиньёй.

3

Sonic, спасибо. Можно будет попробовать.
php тут некритично... с ним немного знаком, думаю, и так запущу, либо переведу на что-нить другое. Через сокеты не пробовал. Я думал. что просто wget-ом по идее можно.
http://draft.blogger.com/feeds/*много  цифры*/archive - вот такого вида ссылка.
Ну у меня http://draft.blogger.com/feeds/49507388 … 57/archive

4

В "записках дебианщика" помню промелькало решение, как раз про blogger даже.

5

Добрый день
У гугла же существует API для авторизации и не только. Ознакомиться можно здесь.
Таким образом можно составить подобный shell скрипт:

#!/bin/sh

Email=$1
Passw=$2

die()
{
    echo "$1" >&2
    exit 1
}

# using google API to login
auth=`wget -q -O- --post-data="Email=$Email&Passwd=$Passw&service=blogger&accountType=GOOGLE&source=wget-home-1" https://www.google.com/accounts/ClientLogin | grep Auth | cut -d= -f 2`
[ -z "$auth" ] && die "Login failed"

# get some page of the blogger.com using received auth code
wget --header "Authorization: GoogleLogin auth=$auth" http://www.blogger.com/home

Вместо последней ссылки можно подставить ссылку на Ваш архив, если эта ссылка постоянная. Иначе можно перейти на страницу, где находится эта ссылка и загрепать её.