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

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);
    }
}


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


(Анонимно)
2008-03-17 06:11 (ссылка)
для flickr не надо никаких скриптов (в Оперы и тормозилле по крайней мере).

в Опере есть встроеный content blocker, в тормозилле наверняка уже стоит adblock+. блочим вот такую маску: «http://*.flickr.com/images/spaceball.gif». всё. теперь радостно и весело тыцаем правомышкой на картинку — и! фокус — можно утянуть ссылку. вот с примера ссылка, стянутая в Опере после блокирования дурацкого "шарика": http://farm3.static.flickr.com/2247/2312003769_ab64539403.jpg?v=1204734230

может, оно блокирует что-то жабоскриптом ещё — тут noscript спасёт.

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


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