2017-09-23 7 views
1

にここに私は私の方法を使用して開こうとすると、リンクされています?得るjsoupとのリンクへのリンクをリダイレクト使用トークン=エンド

https://www.deviantart.com/download/652802405/sugar_rush_by_rainbow_highway-dasntk5.png?token=2080f7bdd7953b1b5128e45fe1f8d06c6ba8c4f1&ts=1506130109

ここではそれを開くために、私が持っているコードで、それは....私は言葉を何すべての最初のを知りたい

​​

動作しない?トークン=最終手段に?

この方法ではブラウザがリンクを開くことができないのはなぜですか?

Webブラウザで実行できる場合は、jsoupを使用して何かを行うことができますか?

私が検索し、私は種類のそれは、クッキー認証であるという考えを得るが、私は詳細を得ることはありません。(私が詳細を知っていれば、私はおそらく、どのように偽のそれを知っているだろう...)

は、ページ上のリンクがどこにあるかについて疑問に思う場合には、それはここにある: https://rainbow-highway.deviantart.com/art/Sugar-Rush-652802405

私はリダイレクトするために、このページでクッキーが必要ですか私はトークンの終わりで空想進コードが必要? = ?????

リンクはダウンロードボットンにあります、それは私自身のDAページです。

答えて

0

私は解決策を見つけました。それはウェブサイトの逸脱した芸術のために働きます。 githubのプロジェクトに触発されました。

https://github.com/4pr0n/ripme/blob/master/src/main/java/com/rarchives/ripme/ripper/rippers/DeviantartRipper.java

Map<String,String> cookies = new HashMap<String , String>(); 

    org.jsoup.Connection.Response resp = 
      Jsoup.connect("https://sorcerushorserus.deviantart.com/art/Dash-Academy-2-Hot-Flank-Part8-263131103") 
      .userAgent("Mozilla").execute(); 

    cookies = resp.cookies(); 

    Document doc = resp.parse(); 

    Elements eles = doc.select("a.dev-page-download"); 

    if(eles.size()>0) 
    { 
     System.out.println("We have the downlaod link on this page!"); 

     String downloadlink = eles.get(0).attr("href"); 

     System.out.println(":"+downloadlink); 

     HttpURLConnection con = (HttpURLConnection) new URL(downloadlink).openConnection(); 

     String cookiesString = ""; 

     for(Map.Entry<String, String> entry:cookies.entrySet()) 
     { 
      cookiesString = cookiesString+entry.getKey()+"="+entry.getValue()+";"; 
     } 

     cookiesString = cookiesString.substring(0, cookiesString.length()-1); 

     System.out.println("Cookie String: "+cookiesString); 

     con.setRequestProperty("Cookie", cookiesString); 

     con.setRequestProperty("User-Agent","Mozilla"); 

     con.setInstanceFollowRedirects(true); 

     con.connect(); 

     int respondcode = con.getResponseCode(); 

     Thread.sleep(10000); 

     String location = con.getURL().toString(); 

     System.out.println("response code: "+ respondcode); 

     System.out.println("image location: "+location); 

     con.disconnect(); 

そう....クールな...

関連する問題