Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет kouzdra ([info]kouzdra)
@ 2008-03-13 11:29:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
О "защите от копирования книг":
Посидел в ванне - еще раз посмотрел на "защиту от литреса" - все оказалось еще примитивнее, чем я думал:


Юзать: java -jar LIB-Read.jar dyachenko_marina mednyi_korol 30 >dyach.html
(30 - число страниц)
Но жаба в данном случае - стрельба из пушки по воробьям - я-то готовился подменять заголовки, с куками трахаться etc - а все оказалось не просто просто, а очень просто. Вылезу из ванны - может на bash перепишу - думаю, в строчки 3-4 влезет.

import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.GetMethod;

import java.io.IOException;
import java.text.MessageFormat;
import java.util.regex.*;

public class Main {
    private static HttpClient client = new HttpClient();
    private static String bookUrl(String auth, String bk, int pg) { return MessageFormat.format("http://lib.aldebaran.ru/author/{0}/{0}_{1}/{0}_{1}__{2}.html", auth, bk, pg); }

    public static void main(String[] args) {
        for (int pg = 0; pg != Integer.parseInt(args [2]); ++ pg)
            System.out.println(filter (get(getRef(getRef(bookUrl(args [0], args [1], pg+1))))) + "\n\n<hr>\n\n");
    }

    // удаление срача
    private static String filter(String s) {
        Matcher pattern = Pattern.compile("s \\+= '([^']*)';").matcher(s);
        StringBuilder res = new StringBuilder();
        while (pattern.find ()) res.append(pattern.group(1)).append("\n");
        return Pattern.compile("(<span class=h>[^<]*</span>)").matcher(res.toString()).replaceAll("");
    }

    private static String get(String uri) {
        final HttpMethod method = new GetMethod(uri);
        try { client.executeMethod(method); return method.getResponseBodyAsString(); }
        catch (IOException e) { e.printStackTrace(); return null; }
    }

    private static String getRef(String url) {
//        return Pattern.compile("[\"'](http://[a-zA-Z0-9.-]+/getpage/[0-9]+/[0-9A-Fa-f]+)['\"]").matcher(get(url)).group(1);
        final Matcher matcher = Pattern.compile("[\"'](http://[a-zA-Z0-9.-]+/getpage/[0-9]+/[0-9A-Fa-f]+)['\"]").matcher(get(url));
        matcher.find ();
        return matcher.group(1);
    }
}


(Читать комментарии) - (Добавить комментарий)


[info]kaledin
2008-03-13 19:43 (ссылка)
Nu vot primer. Kak vidihs', on pridumyvaet dlinnoe sluchajnoe nazvanie fajla, i krome togo, pryachet ssylku (ya smotrel kak imenno, pryachet tupo, tipa one step removed) i ne daet "save image as". Strogo govorya, ehto zavisit ot pol'zovatelya -- mozhno smenit' ustanovki, togda budet otdel'no link na download. No mozhno i chtob ne bylo. Krome togo, osmyslennaya opciya ehto "sgruzit' vse fotografii dannogo pol'zovatelya"; uzret' ikh mozhno, nachinaya s pervoj stranicy (v privedennom primere ona takaya, dalee po linkam vnizu. I eshche tam est' "sets"; razumno takzhe sgruzhat' dannyj set.

(Ответить) (Уровень выше)


(Читать комментарии) -