Я хочу сканировать этот веб-сайт , используя библиотеку java jsoup
.
Мой код выглядит следующим образом:
private String crawl() {
Document doc = null;
try {
doc = Jsoup.connect(getUrl()).headers(getRequestHeaders()).get();
} catch (Exception e) {
e.printStackTrace();
}
return doc.body().text();
}
private String getUrl() {
return "https://usa.visa.com/support/consumer/travel-support/exchange-rate-calculator.html?" +
"amount=1&" +
"fee=3&" +
"fromCurr=IDR" +
"&toCurr=USD" +
"&submitButton=Calculate+exchange+rate";
}
private Map<String, String> getRequestHeaders() {
Map<String, String> headers = new HashMap<>();
headers.put("authority", "usa.visa.com");
headers.put("cache-control", "max-age=0");
headers.put("upgrade-insecure-requests", "1");
headers.put("user-agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36");
headers.put("accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3");
headers.put("accept-encoding", "gzip, deflate, br");
headers.put("accept-language", "en-US,en;q=0.9");
return headers;
}
Если я пытаюсь сканировать его локальноработает отлично.Но когда я развернул код в функции AWS Lambda, я получил страницу отказа в доступе:
<HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD><BODY>
<H1>Access Denied</H1>
You don't have permission to access "http://usa.visa.com/support/consumer/travel-support/exchange-rate-calculator.html?" on this server.<P>
Reference #18.de174b17.1561156615.19dc81c4
</BODY>
</HTML>
Когда я попытался использовать curl
локально с помощью следующей команды, он выдает мне ту же ошибку.
curl 'https://usa.visa.com/support/consumer/travel-support/exchange-rate-calculator.html?amount=1&fee=3&fromCurr=IDR&toCurr=USD&submitButton=Calculate+exchange+rate' -H 'authority: usa.visa.com' -H 'cache-control: max-age=0' -H 'upgrade-insecure-requests: 1' -H 'user-agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2' -H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3' -H 'accept-encoding: gzip, deflate, br' -H 'accept-language: en-US,en;q=0.9' --compressed
Я также пытался использовать куки в соответствии с ответом здесь , но все еще не решает проблему.
Я подозреваю, что на сайте есть какой-томеханизма, чтобы защитить его от сканирования.Что я могу сделать, чтобы обойти это?