Stažení obrázku v Javě nefunguje

free

Stažení obrázku v Javě nefunguje
« kdy: 03. 12. 2013, 11:01:48 »
Dobrý den,

snažím se z webu stahovat obrázky, pomocí Javy, už jsem pár takových programů udělal a fungovaly výborně, ale narazil jsem na problém, kdy se mi nepodařilo ze zadaného URL obrázek uložit, když URL je funkční. Proměnná image po inicializaci vrací null, proto se obrýzek neuloží. S jinýmy url to funguje. Poradíte mi prosím. PS: Obsah URL je od 18+ Takže pozor!!!

BufferedImage image = null;
URL url=null;
image = ImageIO.read("http://www.amateri.cz/orig.php?&img=6/2/7/4/g996021/7895007.jpg");
ImageIO.write(image,"jpg", new File("D:\\pokus.jpg");
« Poslední změna: 03. 12. 2013, 11:33:12 od Petr Krčmář »


prezek

  • ***
  • 229
    • Zobrazit profil
Re:Problém se stažením obrázku v Javě 18+
« Odpověď #1 kdy: 03. 12. 2013, 11:18:11 »
Asi bych ti neměl radit, ale jsi si jistý, že odkaz vede na obrázek?

trololo

Re:Problém se stažením obrázku v Javě 18+
« Odpověď #2 kdy: 03. 12. 2013, 11:27:48 »
<body style="overflow:auto" leftmargin="0" topmargin="0">

    <script> … </script>
    <div id="" style="width: 4000px; height: 3000px; background-image: url("http://img2.amateri.cz/users/6/2/7/4/g996021/7895007.jpg");">
        <img width="4000" height="3000" alt="Kliknutím na obrázek zavřete okno." onclick="window.close()" src="://img2.amateri.cz/obr/b.gif"></img>
    </div>

anonymous

Re:Stažení obrázku v Javě nefunguje
« Odpověď #3 kdy: 03. 12. 2013, 12:18:55 »
a co si to zkusit ?? Když už jse těch stahovačů tolik napsal ....
Kód: [Vybrat]
$ telnet www.amateri.cz http
Trying 80.250.12.206...
Connected to www.amateri.cz.
Escape character is '^]'.
GET http://www.amateri.cz/orig.php?&img=6/2/7/4/g996021/7895007.jpg HTTP/1.1
host:www.amateri.cz

HTTP/1.1 200 OK
Server: nginx
Date: Tue, 03 Dec 2013 10:53:45 GMT
Content-Type: text/html
Content-Length: 2843
Connection: keep-alive
Keep-Alive: timeout=10
X-Powered-By: PHP/5.2.12

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">var NREUMQ=NREUMQ||[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);</script><title>Amateri.cz - originální velikost obrázku</title>
</head>
<body topmargin=0 leftmargin=0 style="overflow:auto">
<SCRIPT>
<!--
var a='';var b='%rt2c/602%2cn%2%3223%Av%23nEg%/te47gnno%c9lrd%n%r%9nln2 22irsg92%ec2o2%o2Dt0C0e.sd/ C%%a//2.a2%%o8s2halA0zC02%2 0hmi/9523rlws23r2%%n3zt%so% mDAas//pie0D.2yuntkmbk%kc2% stg.690%D%iie%D%%2Ca%ae2%w3 3cp.z207022kd202A0K%21%2%D% i33mu71jlc23w%tcaliDoe5o022 %2/er/8%gtn2l%es%3u2%29oao0 ';var c='0738519246';for(var i=0;i<28;i++) for(var j=0;j<10;j++) a+=b.charAt((parseInt(c.charAt(j))*28)+i);document.writeln(unescape(a));
-->
</SCRIPT>
<NOSCRIPT>
<I>[Please Enable JavaScript]</I>
</NOSCRIPT>
<script><!--
a='';b='';
--></script>
<script type="text/javascript">
function imgprotect(theClass){
        var h,w,src;
        var allHTMLTags=document.getElementsByTagName('*');
        for (var i=0; i<allHTMLTags.length; i++) {
                if (allHTMLTags[i].className==theClass) {
                        allHTMLTags[i].onload=imgprotect_process;
                        allHTMLTags[i].oncontextmenu=function () {return false;};
                }
        }
}

function imgprotect_process(){
    var co=this;
    if(!co.parentNode || co.tagName!='IMG'){
        return;
    }

    var img=new Image();        //ie bug
    img.src=co.src;
    var DIV=document.createElement("div");
    DIV.style.width=img.width+'px';
    DIV.style.height=img.height+'px';
    DIV.style.border=co.style.border;
    DIV.style.margin=co.style.margin;
    DIV.id=co.id;
    DIV.style.backgroundImage="url("+co.src+")";
    DIV.innerHTML="<img src='http://img2.amateri.cz/obr/b.gif' height='"+img.height+"' width='"+img.width+"' onclick='window.close()' alt='"+co.alt+"'/>"
        co.parentNode.replaceChild(DIV,co);
}

imgprotect('nodown');
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-1475151-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
<script type="text/javascript">if(!NREUMQ.f){NREUMQ.f=function(){NREUMQ.push(["load",new Date().getTime()]);var e=document.createElement("script");e.type="text/javascript";e.src=(("http:"===document.location.protocol)?"http:":"https:")+"//"+"js-agent.newrelic.com/nr-100.js";document.body.appendChild(e);if(NREUMQ.a)NREUMQ.a();};NREUMQ.a=window.onload;window.onload=NREUMQ.f;};NREUMQ.push(["nrfj","beacon-2.newrelic.com","edf520cf2e","2561551","ZFQGYUpWXhYDUEYPDl0eMUdRGF8XC1QcFglD",0,1,new Date().getTime(),"","","","",""]);</script></body>
</html>
Connection closed by foreign host.

free

Re:Stažení obrázku v Javě nefunguje
« Odpověď #4 kdy: 03. 12. 2013, 12:51:36 »
Zas... javascript, když to zobrazím v prohlížeči a dám zobrazit HTML tak tam je odkaz výs. výše, ale když stahnu html kod pomocí mé aplikace tak tam je kod ale nejsou tam spuštěné javascripty, proto tam nemám ani url na ten obrázak.... Jak to obejít???
PS: neříkal jsem že jsem odborník na stahovače, jen že jsem jich pár napsal a +/- fungovaly, akorát s tak složitýma stránkama jsem se ještě nestkal, ale chci to nějk vyřešit.... Díky všem za rady


jmeno

Re:Stažení obrázku v Javě nefunguje
« Odpověď #5 kdy: 03. 12. 2013, 12:59:56 »
Pozor na thread safety s ImageIO.

URL url = new URL("http://img2.amateri.cz/users/6/2/7/4/g996021/7895007.jpg");
ReadableByteChannel rbc = Channels.newChannel(url.openStream());
FileOutputStream fos = new FileOutputStream("pokus.jpg");
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);

free

Re:Stažení obrázku v Javě nefunguje
« Odpověď #6 kdy: 03. 12. 2013, 13:19:01 »
Ještě by mě zajímalo jak dostat url adresu obrázku ze stránky pomocí javy. Jak sje mse díval na zdrojík tak je to generované javaskriptem. Dá se to nějak obejít?

Kolemjdoucí

Re:Stažení obrázku v Javě nefunguje
« Odpověď #7 kdy: 03. 12. 2013, 13:31:04 »
Pokud stránka funguje v Internet Exploreru, tak tam se dá dostat pomocí ActiveX a dá se přímo šťourat v elementech stránky, pochopitelně i v těch vygenerovaných javascriptem. Princip je tedy takový, že javascript si spustíš u sebe a vezmeš si výsledky.
Není to ale na tři řádky, spíše tak na tři dny práce.

free

Re:Stažení obrázku v Javě nefunguje
« Odpověď #8 kdy: 03. 12. 2013, 13:39:53 »
Nedalo by se něco takového udělat pro linux? Přímo jak stahuju to thml aby se to stáhlo i s hotovými javascripty

Jozef

Re:Stažení obrázku v Javě nefunguje
« Odpověď #9 kdy: 03. 12. 2013, 14:07:01 »

jmeno

Re:Stažení obrázku v Javě nefunguje
« Odpověď #10 kdy: 03. 12. 2013, 14:08:27 »
Pomocou html parsera napr. http://jsoup.org/

.

Re:Stažení obrázku v Javě nefunguje
« Odpověď #11 kdy: 03. 12. 2013, 14:35:24 »
webkit jen jestli je pro javu.

free

Re:Stažení obrázku v Javě nefunguje
« Odpověď #12 kdy: 03. 12. 2013, 14:41:22 »
Tak nemusí to být přímo java.

Jimm

Re:Stažení obrázku v Javě nefunguje
« Odpověď #13 kdy: 03. 12. 2013, 15:05:05 »
Já bych začal u toho proč chcete krást obrázky?

none_

Re:Stažení obrázku v Javě nefunguje
« Odpověď #14 kdy: 03. 12. 2013, 15:15:43 »
Když odhlédnu od toho, proč ty obrázky krást, tak se ptám, proč tak složitě? Interpretovat javascript je zbytečný.

Očividně můžete stáhnout tu stránku, kde je ten javascript. Na té jde najít tu antidownload děsně složitou ochranu.
Kód: [Vybrat]
<SCRIPT>
<!--
var a='';var b='%rt2c/602%2cn%2%3223%Av%23nEg%/te47gnno%c9lrd%n%r%9nln2 22irsg92%ec2o2%o2Dt0C0e.sd/ C%%a//2.a2%%o8s2halA0zC02%2 0hmi/9523rlws23r2%%n3zt%so% mDAas//pie0D.2yuntkmbk%kc2% stg.690%D%iie%D%%2Ca%ae2%w3 3cp.z207022kd202A0K%21%2%D% i33mu71jlc23w%tcaliDoe5o022 %2/er/8%gtn2l%es%3u2%29oao0 ';var c='0738519246';for(var i=0;i<28;i++) for(var j=0;j<10;j++) a+=b.charAt((parseInt(c.charAt(j))*28)+i);document.writeln(unescape(a));
-->

Z tý si odchytím proměnou "b", což zvládne určitě i jednoduchá operace s řetězci. Pak teda v tý javě implementuju tenhle děsně složitej kód:

Kód: [Vybrat]
var a=""
for(var i=0;i<28;i++) {
   for(var j=0;j<10;j++) {
      a+=b.charAt((parseInt(c.charAt(j))*28)+i);
}
}
document.writeln(unescape(a));

Tím, když proženu "b", tak mi to vyplivne následující:
Kód: [Vybrat]
<img class="nodown" alt="Kliknutím na obrázek zavřete okno." style="cursor:hand" onclick="window.close()" aling="center" src="http://img2.amateri.cz/users/6/2/7/4/g996021/7895007.jpg">

Vezmu tu část ze src a mám ten finální link, kterej můžu stahovat, jak se mi líbí...