我目前正在开发一个供个人使用的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文件。另一种方法是打开下载链接,以便用户可以单击“下载”按钮,该按钮不起作用。
有没有办法解决这个安全问题并获取文件,如果没有,我有兴趣知道保护措施是什么阻止了这个。
谢谢!