允许Android应用程序从检查/排除移动浏览的网站下载文件?

时间:2015-03-24 04:07:28

标签: android html jsoup

我目前正在开发一个供个人使用的Android应用程序,它将刮掉如下网站: http://tabs.ultimate-guitar.com/l/led_zeppelin/stairway_to_heaven_ver9_guitar_pro.htm

特别是,该网站有以下形式:

<form action='http://tabs.ultimate-guitar.com/tabs/download' name="tab_download" class="tab_downloadcl notebox">
                <div class="textversbox">
                        <input type='hidden' name='id' value='223796' id="tab_id">
                        <input type='hidden' name='session_id' value='SESSION_ID_HERE'>

点击下载按钮后,网站会构建以下链接:

Request URL:http://tabs.ultimate-guitar.com/tabs/download?id=223796&session_id=SESSION_ID_HERE&token=TOKEN_VALUE_HERE

我不确定从哪里获取令牌值(我怀疑以后在表单中找到了一个SWF文件)。但是,下载链接似乎可以通过省略此令牌在桌面上工作。

但是,该网站的构建方式是,如果我要在移动设备上访问该网站,点击下载按钮会将用户重定向到论坛。如果用户要遵循我构建的链接,也会发生同样的事情。

目前,我有一个AsyncTask用于下载上面的第一个链接,并使用Jsoup构建适当的URL。它可以在这里找到:

Document doc = Jsoup.connect(urls[0])
               .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
                    .referrer("http://www.google.com")
                    .get();
            // Scrape page for download form
            String download_url = "http://tabs.ultimate-guitar.com/tabs/download?";
            Elements form_elements = doc.select("form.tab_downloadcl");
            Elements elements = form_elements.select("input[name]");
            for (Element em : elements) {
                if (em.attr("name").equals("id")) {
                    download_url += "id=" + em.attr("value") + "?";
                }

                if (em.attr("name").equals("session_id")) {
                    download_url += "session_id=" + em.attr("value");
                }
            }

我尝试在浏览器中打开链接,重定向到论坛。我也尝试构建一个DownloadManager.Request,它下载.bin文件。另一种方法是打开下载链接,以便用户可以单击“下载”按钮,该按钮不起作用。

有没有办法解决这个安全问题并获取文件,如果没有,我有兴趣知道保护措施是什么阻止了这个。

谢谢!

0 个答案:

没有答案