У меня есть сценарий удара, названный test.sh, и это текущий:
url=
lynx -dump $url > story.txt
echo "step one completed"
Кроме тех случаев, когда я работаю ./test.sh http://www.fox.com
или любой веб-сайт, в story.txt говорится:
Forbidden
You don't have permission to access / on this server.
Как я фиксирую его так, чтобы, когда я открываю story.txt, он отобразил фактический дамп URL?
Этот URL также выдает ошибку с curl
:
curl -i http://www.fox.com/
HTTP/1.1 403 Forbidden
Server: AkamaiGHost
Mime-Version: 1.0
Content-Type: text/html
Content-Length: 260
Cache-Control: max-age=3600
Date: Thu, 06 Dec 2012 20:17:17 GMT
Connection: close
<HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD><BODY>
<H1>Access Denied</H1>
You don't have permission to access "http://www.fox.com/" on this server.<P>
Reference #18.2fa2f5cc.1354825037.8323a81
</BODY>
</HTML>
Очевидно, что на сайте происходит странный анализ пользовательского агента. Передача пользовательского агента Firefox, кажется, работает:
curl -i -A 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:17.0) Gecko/17.0 Firefox/17.0' http://www.fox.com/
HTTP/1.1 200 OK
Server: Apache
Content-Length: 70647
Content-Type: text/html; charset=utf-8
X-FarmName: www.fox.com
X-FarmAddr: 10.96.57.103
Cache-Control: max-age=3600
Date: Thu, 06 Dec 2012 20:22:58 GMT
Connection: keep-alive
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:tp="http://player.theplatform.com/" xmlns:og="http://ogp.me/ns#" xmlns:fb="http://www.facebook.com/2008/fbml" >
<head>
<title>FOX Broadcasting Company - FOX Television Shows</title>
Ваш сценарий не работает для меня, но я думаю, что он работает для вас, поэтому у нас может быть другая настройка. Я изменил сценарий на
lynx -dump $1 > story.txt
echo "step one completed"
Я запускаю его с
./test.sh http://www.techland.ro
и получаю тот же результат.
Вместо запуска скрипта с fox.com попробуйте с techland.ro, и вы увидите, что скрипт на самом деле работает просто отлично. Проблема не в вашем скрипте, а в веб-сайте, к которому вы пытаетесь получить доступ. Я считаю, что он блокирует сканеры веб-сайтов, потому что lynx - это браузер командной строки, который на самом деле действует точно так же, как сканер, и в результате вы получаете сообщение.
Вы можете установить различные правила для веб-сайтов. Если веб-сайт блокирует неизвестных сканеров, он также, вероятно, будет блокировать lynx (или любой другой браузер командной строки). Ваш сценарий в порядке, сайт блокирует вас.