| |||
![]()
|
![]() ![]() |
![]()
О "защите от копирования книг": Посидел в ванне - еще раз посмотрел на "защиту от литреса" - все оказалось еще примитивнее, чем я думал: Юзать: 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); } } |
||||||||||||||
![]() |
![]() |