Как отсканить книгу из флэша?

Nataliaj

Есть книга в инете, которую можно открыть во флеш-оболочке с кнопочками - след. страница, пред. страница. Хочется ее отсканить. Самый тупой способ - написать прогу, которая по горячей клавише делает скриншот и сейвит на диск. Подскажите, пожалуйста, как сделать
1) На Visual C# прогу, которая будучи неактивной (будет открыт браузер) будет реагировать на клавиши
2) Может как-то можно оптимизировать, например не клацать самому мышью на next

elenangel

вначале нужно выяснить, подгружает ли флеш книгу по кусочкам из сети или она зашита в него целиком и он показывает нужные кусочки по кликам. В зависимости от этого надо в первом случае - подсмотреть адрес откуда оно тянет страницы и по аналогии вытянуть всю книгу например при помощи wget в автоматическом режиме. Во втором случае надо как-то расковырять swf, тут ничего конкретного сказать не могу, но думаю есть декомпиляторы и редакторы ресурсов, и даже наверно простой hex -редактор может оказаться полезным.
Ну и это, ссылочку посмотреть было бы интересно, может там все совсем элементарно.

Nataliaj

Грузится по частям, но внутри флеш-оболочки. Можно про wget поподробнее, не очень понятно... Ссылка - http://www.lib.alpinabook.ru/

YUAL

но оно всё таскает такими запросами:
/data/issues/issue_1031641/thumb/img-000029.jpg?key=4e8514afc4c27be36fbcd5b8d3f42b90
/data/issues/issue_1031641/pages/1280/img-000028.jpg?key=c2d192e93ae330a37411da46413d2960
значение кей каждый раз разное, но
wget http://www.readoz.com/data/issues/issue_1031641/thumb/img-000029.jpg

жипег у меня сохранило.

zorin29

ну да, thumb-ы он отдает и без key, а pages - не отдает, похоже

YUAL

точняк. как-то не проверил. ну тогда я бы предложил самый простой способ: перехватывать траффик от этого сервера и складывать картинки в папочку. он идёт не шифрованный вроде.

elenangel

[del]
неа, блин, не получилось, не тот текст вытащил (

serge18

но оно всё таскает такими запросами: /data/issues/issue_1031641/thumb/img-000029.jpg?key=4e8514afc4c27be36fbcd5b8d3f42b90/data/issues/issue_1031641/pages/1280/img-000028.jpg?key=c2d192e93ae330a37411da46413d2960значение кей каждый раз разное, но code:wget http://www.readoz.com/data/issues/issue_1031641/thumb/img-00... у меня сохранило.
а можно, так сказать, для собственного развития поинтересоваться - где вы адреса с ключами разыскали?

Dasar

где вы адреса с ключами разыскали?
из простого: в Firefox ставится плагин FireBug, и при открытии данной флэшки смотрится страница Сеть в Firebug-е.
зы
в других браузерах есть свои аналоги Firebug-а

shdenis

а из кеша браузера не легче вытащить?

elenangel

для этого прощёлкать надо руками все странички и подождать пока загрузится. вон ТС хочет автотыкалку делать как я понял.

YUAL

ну её наверно в любом случае придётся протыкать, если не разбирать флэш и не узнавать как он ключик генерит. но автотыкалку тут сделать просто. берёшь autoit под винду или моего чё-то-там-не-помню как зовётся и кликаешь с секундным интервалом на автомате.

YUAL

а из кеша браузера не легче вытащить?
я не доверяю кэшу браузера. он то кэширует то не кэширует, сам удаляет, переименовывает. нафиг надо?

YUAL

а можно, так сказать, для собственного развития поинтересоваться - где вы адреса с ключами разыскали?
я тупо запустил wireshark и листнул страницу.

oksan4ik79

вот так можно выдернуть все ссылки на картинки с ключами (только придется потыкать все страницы до конца, но там их не так много)
 ngrep -q -d eth0 'pages/1280' | grep -aEo "http.*key=[a-f0-9]+" 

в пределах одного браузера и ip-адреса ключи не меняются (кстати, ключ - это похоже md5 хеш, только вот чего? но все-равно не качает. Что-то мне подсказывает, что надо рефер поставить и куки. Проверил только с рефером - не качает, 403 отдает, надо ещё с куки попробовать.

PooH

в свое время пытался утянуть одну редкую книжку с похожего ресурса (там на время покупается)
забил и написал тыкалку на autohotkey (скрипт даже где-то сохранился)
точно не помню, но вроде год назад swf просмотровщик поддавался декомпиляции, если так и осталось, то можно реверснуть алгоритм генерации ключа

oksan4ik79

выкачал, держи. Только ключи сам убирай, мне влом :)
если кому интересно, выкачивал примерно так
 wget --referer http://www.readoz.com/reader/book_mod1.swf --no-cookies --header 'Cookie: i1031641="5CEDEF6F22CD821243589CFED78EE0F1,8"; JSESSIONID=2F8C7B7E4F4ED35E1864A18FAB716A89' -i b

b - файлик со ссылками

Nataliaj

О, слушай, круто! А можешь подробнее расписать алгоритм - откуда брать линки, куки, и как генерить файл b?

oksan4ik79

Получаем нгрепом ссылки из трафика, генерирующегося при тыкании кнопочки "вперед" в флеш приложении и сохраняем вывод в файлик b
 ngrep -q -d eth0 'pages/1280' | grep -aEo "http.*key=[a-f0-9]+" > b 

Если ngrep запустить без "| grep -aEo "http.*key=[a-f0-9]+" > b" то можно увидеть куки. Вытаскиваем оттуда куки и качаем вгетом
 wget --referer http://www.readoz.com/reader/book_mod1.swf --no-cookies --header 'Cookie: i1031641="5CEDEF6F22CD821243589CFED78EE0F1,8"; JSESSIONID=2F8C7B7E4F4ED35E1864A18FAB716A89' -i b 

как-то так

Nataliaj

То есть все равно придется всю книгу пролистывать?

saveliev_a

AutoIt тебе в помощь.

Nataliaj

Написал запрос и вывалилось
  
C:\Temp\wget>wget --referer http://www.readoz.com/reader/book_mod1.swf --load-co
okies cookies.txt -i b.txt -d
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = c:/progra~1/wget/etc/wgetrc
DEBUG output created by Wget 1.11.4 on Windows-MinGW.

Loaded b.txt (size 110).

Stored cookie www.readoz.com -1 (ANY) /data/issues/issue_1031641 <session> <inse
cure> [expiry none] i1031641 "5CEDEF6F22CD821243589CFED78EE0F1,8"

Stored cookie www.readoz.com -1 (ANY) / <session> <insecure> [expiry none] JSESS
IONID 2F8C7B7E4F4ED35E1864A18FAB716A89
--2011-06-08 11:37:45-- http://www.readoz.com/data/issues/issue_1031641/pages/1
280/img-000028.jpg?key=c2d192e93ae330a37411da46413d2960
Resolving www.readoz.com... seconds 0,00, 216.87.176.205
Caching www.readoz.com => 216.87.176.205
Connecting to www.readoz.com|216.87.176.205|:80... seconds 0,00, connected.
Created socket 1052.
Releasing 0x009bedb0 (new refcount 1).

---request begin---
GET /data/issues/issue_1031641/pages/1280/img-000028.jpg?key=c2d192e93ae330a3741
1da46413d2960 HTTP/1.0
Referer: http://www.readoz.com/reader/book_mod1.swf
User-Agent: Wget/1.11.4
Accept: */*
Host: www.readoz.com
Connection: Keep-Alive
Cookie: i1031641="5CEDEF6F22CD821243589CFED78EE0F1,8"; JSESSIONID=2F8C7B7E4F4ED3
5E1864A18FAB716A89

---request end---
HTTP request sent, awaiting response...
---response begin---
HTTP/1.1 403 Forbidden
Via: 1.1 MSK-KLTN-TMG003
Connection: Keep-Alive
Proxy-Connection: Keep-Alive
Content-Length: 964
Date: Wed, 08 Jun 2011 07:37:54 GMT
Content-Type: text/html;charset=utf-8
Server: Apache-Coyote/1.1

---response end---
403 Forbidden
Registered socket 1052 for persistent reuse.
Skipping 964 bytes of body: [<html><head><title>Apache Tomcat/6.0.20 - Error rep
ort</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;backgr
ound-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;colo
r:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,s
ans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-famil
y:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Ta
homa,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Taho
ma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : blac
k;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP
Status 403 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</
p><p><b>message</b> <u></u></p><p><b>description</b> <u>Access to the specified
resource has been forbidden.</u></p><HR size="1" noshade="noshade"><h3>Apache
Tomcat/6.0.20</h3></body></html>] done.
2011-06-08 11:37:46 ERROR 403: Forbidden.

b.txt:
  

http://www.readoz.com/data/issues/issue_1031641/pages/1280/img-000028.jpg?key=c2d192e93ae330a37411da46413d2960

cookies.txt:
  
# Cookies for domains related to readoz.com.
# This content may be pasted into a cookies.txt file and used by wget
# Example: wget -x --load-cookies cookies.txt http://www.readoz.com/reader/book_mod1.swf
#
www.readoz.com FALSE /data/issues/issue_1031641 FALSE 0 i1031641 "5CEDEF6F22CD821243589CFED78EE0F1,8"
www.readoz.com FALSE / FALSE 0 JSESSIONID
2F8C7B7E4F4ED35E1864A18FAB716A89

В чем может быть проблема?

elenangel

дай угадаю - ты тупо скопировал куки 'а?

Nataliaj

В данном случае да, но я ставил и те, которые сам попробовал достать - результат такой же. Кстати, как их вообще достать можно?

oksan4ik79

+ скопировал ссылку с ключом :) Повторюсь, пожалуй: ключ одинаковый только в пределах одного ip (как минимум, возможно ещё и юзер-агент влияет).
Мой совет: не сношай мозг под виндой, загрузись с лайфцд убунты, например, установи ngrep (sudo apt-get install ngrep) и сделай то, что я написал выше, проблем возникнуть не должно.

Nataliaj

Ага, и это называется не сношать мозг? С ключами я разобрался, мне осталось только понять как куки вытаскивать, вот и все

elenangel

для целей "перехватить/подсмотреть трафик", "написать простенький скрипт", "отфильтровать текст по регулярным выражениям" использовать линукс - это и есть "не сношать мозг".

Nataliaj

А для целей скачать книжку ставить никс - это сношать мозг

yroslavasako

Поскольку готового софта нет, и надо писать свой, то линукс однозначно предпочтительнее. Там проще работать с сетью, есть много приложений-кирпичиков, а если ты хочешь в проге заюзать либу, ты её ставишь из пакетного менеджера, а не посредством рукоблудия

elenangel

с каких пор предложение загрузиться с liveCD приравнивается к установки ОС?

okis

ставить никс
достаточно cygwin

elenangel

сомневаюсь что под cygwin нормально будет работать ngrep. И wireshark помнится на винде работал неидеально, на libpcap ругался чего-то.

Nataliaj

С каких пор предложение загрузиться с liveCD приравнивается к установки ОС?

Действительно с LiveCD, надо будет еще в магазин за носителем переться!
Друзья! Не хочется в этой теме спорить, какая ОС лучше. Просто скажите, как достать куки по кросс-ссылке из флэша (желательно из Windows, но можно и под Unix буду очень признателен!

elenangel

Действительно с LiveCD, надо будет еще в магазин за носителем переться!
скачиваешь VirtualBox, грузишься с iso. Какой еще носитель?

elenangel

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

Nataliaj

Линукса я себе когда-то ставил, ничего страшного нет. Но только я не программист, поэтому поставить линукса, скачать книгу, а потом его сносить желания нет. Тем более потому что эквивалентное этому действие с точки зрения результата - это узнать два параметра в куки

Dasar

как я уже упоминал все эти данные есть в FireBug-е

Nataliaj

Всем спасибо! Поперло!

SergZ495

тебе поможет программа hypersnap
она сама пролистает книгу и засканит
Оставить комментарий
Имя или ник:
Комментарий: