Первые практикумы (curl -v -i -I -D) Как скачать страницу, посмотреть исходящие и входящие HTTP заголовки, перенаправить все в файл, подменить заголовок "user agent"
In []:
-A, --user-agent STRING User-Agent to send to server (H)
-O, --remote-name Write output to a file named as the remote file
--remote-name-all Use the remote file name for all URLs
-I, --head Show document info only
-i, --include Include protocol headers in the output (H/F)
-D, --dump-header FILE Write the headers to this file
Первый этап - это первое знакомство с бибилотекой (найти документацию производителя и обзорное видео), второй этап - найти чью-нибудь "обучалку", лучше серию видеороликов..., или толковую статью. Помимо изучения библиотеки, нужно еще четко представить себе последовательность действий (процессов) и сформировать инфраструктуру (инструментарий) для последующей работы. Например, как я буду смотреть заголовки HTTP? Так что, видеоролики еще ценны и тем, что там "между делом" показывают эти инструменты... Третий этап - постижение опций..., короткие статьи разных авторов с примерами кода.
Modifying user-agent in curl or wget ERROR 403: Forbidden
Change User Agent with curl to Get URL Source Code as Different OS & Browser
Custom User-Agent String
User agent The User-Agent string is one of the criteria by which Web crawlers may be excluded from accessing certain parts of a Web site using the Robots Exclusion Standard (robots.txt file).
Robots exclusion standard
Get HTTP Header Info from Web Sites Using curl
curl.1 the man page
Change User Agent with curl to Get URL Source Code as Different OS & Browser
Custom User-Agent String
User agent The User-Agent string is one of the criteria by which Web crawlers may be excluded from accessing certain parts of a Web site using the Robots Exclusion Standard (robots.txt file).
Robots exclusion standard
Get HTTP Header Info from Web Sites Using curl
curl.1 the man page
In [1]:
!curl -h
In []:
--user-agent Ниже примеры из первой и второй ссылок. Базовый синтаксис опции: curl -A "UserAgentString" http://url.com¶
In []:
wget --user-agent="User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12" -c http://yourwebaddresshere/filetodownload.txt
curl -A "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12" -O http://yourwebaddresshere/filetodownload.txt
In []:
curl -A "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5" http://www.apple.com
Отметим, что здесь два варианта строки с "User-Agent:..." в начале и без. Очевидно, что второй вариант предпочтетельнее...
Custom User-Agent String¶
Как проверить, работает ли строчка "UserAgentString"? Проще всего - тупо проверить ее в браузере. Для этого поставил плагин Custom User-Agent String
Стоит ли притворяться Мозиллой, или назваться ботом? Как использовать robots.txt? Пока на эти вопросы отвечать рановато. Но есть отличный Wki- ресурс, статьи на котором мне очень понравились... The Robot Exclusion Standard, also known as the Robots Exclusion Protocol or robots.txt protocol
Далее примеры из "Get HTTP Header Info from Web Sites Using curl"¶
The easiest way to get HTTP header information from any website is by using the command line tool curl.
In [2]:
!curl -I www.google.com
Чтобы видеть отправленные на сервер заголовки, добавим опцию -v -I (--verbose --head )
In []:
kiss@kali:~/Desktop/curl_wget$ curl -v -I www.google.com
* About to connect() to www.google.com port 80 (#0)
* Trying 64.233.164.103...
* connected
* Connected to www.google.com (64.233.164.103) port 80 (#0)
> HEAD / HTTP/1.1
> User-Agent: curl/7.26.0
> Host: www.google.com
> Accept: */*
>
* additional stuff not fine transfer.c:1037: 0 0
* HTTP 1.1 or later with persistent connection, pipelining supported
< HTTP/1.1 302 Found
HTTP/1.1 302 Found
< Cache-Control: private
Cache-Control: private
< Content-Type: text/html; charset=UTF-8
Content-Type: text/html; charset=UTF-8
< Location: http://www.google.ru/?gfe_rd=cr&ei=y4CyU-nGL8bGZKiDgYgD
Location: http://www.google.ru/?gfe_rd=cr&ei=y4CyU-nGL8bGZKiDgYgD
< Content-Length: 256
Content-Length: 256
< Date: Tue, 01 Jul 2014 09:35:07 GMT
Date: Tue, 01 Jul 2014 09:35:07 GMT
< Server: GFE/2.0
Server: GFE/2.0
< Alternate-Protocol: 80:quic
Alternate-Protocol: 80:quic
<
* Connection #0 to host www.google.com left intact
* Closing connection #0
kiss@kali:~/Desktop/curl_wget$
An easy way to get around all the HTML, Javascript, and CSS nonsense is to use the -D flag to download the header itself into a separate file, and then open that file in your preferred text editor:
In []:
curl -iD httpheader.txt www.apple.com && open httpheader.txt
#
# -D, --dump-header FILE Write the headers to this file
# -i, --include Include protocol headers in the output (H/F)
In []:
После выполнения команды (curl -iD httpheader.txt www.apple.com && vim httpheader.txt) мгновенно открывается vim с содержанием:
In []:
HTTP/1.1 200 OK
Server: Apache
Content-Type: text/html; charset=UTF-8
Cache-Control: max-age=129
Expires: Tue, 01 Jul 2014 10:33:13 GMT
Date: Tue, 01 Jul 2014 10:31:04 GMT
Content-Length: 9783
Connection: keep-alive
А после его закрытия в консоли оказывается... загрузилось все содержимое страницы:
In []:
kiss@kali:~/Desktop/curl_wget$ curl -iD httpheader.txt www.apple.com && vim httpheader.txt
HTTP/1.1 200 OK
Server: Apache
Content-Type: text/html; charset=UTF-8
Cache-Control: max-age=129
Expires: Tue, 01 Jul 2014 10:33:13 GMT
Date: Tue, 01 Jul 2014 10:31:04 GMT
Content-Length: 9783
Connection: keep-alive
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head>
....
....
Попытка ддобавить -v не приводит к успеху
In []:
kiss@kali:~/Desktop/curl_wget$ curl -iDv httpheader.txt www.apple.com && vim httpheader.txt
curl: (6) Couldn't resolve host 'httpheader.txt'
HTTP/1.1 200 OK
ETag: "KXAGGALFMKVQKNR"
Server: Apache
Content-Type: text/html; charset=UTF-8
Cache-Control: max-age=398
Expires: Tue, 01 Jul 2014 10:40:08 GMT
Date: Tue, 01 Jul 2014 10:33:30 GMT
Content-Length: 9783
Connection: keep-alive
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head>
<meta charset="utf-8" />
<meta name="Author" content="Apple Inc." />
<meta name="viewport" content="width=1024" />
....
....
</body>
</html>
kiss@kali:~/Desktop/curl_wget$
Вот правильная связка опций¶
In []:
kiss@kali:~/Desktop/curl_wget$ curl -v -iD httpheader.txt www.apple.com
* About to connect() to www.apple.com port 80 (#0)
* Trying 23.9.216.182...
* connected
* Connected to www.apple.com (23.9.216.182) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.26.0
> Host: www.apple.com
> Accept: */*
>
* additional stuff not fine transfer.c:1037: 0 0
* HTTP 1.1 or later with persistent connection, pipelining supported
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Server: Apache
Server: Apache
< Content-Type: text/html; charset=UTF-8
Content-Type: text/html; charset=UTF-8
< Cache-Control: max-age=338
Cache-Control: max-age=338
< Expires: Tue, 01 Jul 2014 10:57:39 GMT
Expires: Tue, 01 Jul 2014 10:57:39 GMT
< Date: Tue, 01 Jul 2014 10:52:01 GMT
Date: Tue, 01 Jul 2014 10:52:01 GMT
< Content-Length: 9783
Content-Length: 9783
< Connection: keep-alive
Connection: keep-alive
<
<!DOCTYPE html>
...
...
</body>
</html>
* Connection #0 to host www.apple.com left intact
* Closing connection #0
kiss@kali:~/Desktop/curl_wget$
Замене заголовка User-Agent. Пример с опциями: -v (--verbose) -I, (--head Show document info only)¶
In [3]:
!curl -v -I -A "Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140611 Firefox/24.0 Iceweasel/24.6.0" www.apple.com
Замене заголовка User-Agent. Пример сохранения в файле (index.html) текущего каталога (~/Desktop/curl_wge) страницы http://www.apple.com/index.html¶
In []:
kiss@kali:~/Desktop/curl_wget$ curl -v -A "Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140611 Firefox/24.0 Iceweasel/24.6.0" -O http://www.apple.com/index.html
* About to connect() to www.apple.com port 80 (#0)
* Trying 172.227.93.15...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* connected
* Connected to www.apple.com (172.227.93.15) port 80 (#0)
> GET /index.html HTTP/1.1
> User-Agent: Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20140611 Firefox/24.0 Iceweasel/24.6.0
> Host: www.apple.com
> Accept: */*
>
* additional stuff not fine transfer.c:1037: 0 0
* HTTP 1.1 or later with persistent connection, pipelining supported
< HTTP/1.1 200 OK
< Server: Apache
< Content-Type: text/html; charset=UTF-8
< Cache-Control: max-age=1
< Expires: Tue, 01 Jul 2014 11:51:02 GMT
< Date: Tue, 01 Jul 2014 11:51:01 GMT
< Content-Length: 9783
< Connection: keep-alive
<
{ [data not shown]
100 9783 100 9783 0 0 48438 0 --:--:-- --:--:-- --:--:-- 78895
* Connection #0 to host www.apple.com left intact
* Closing connection #0
kiss@kali:~/Desktop/curl_wget$
Посты чуть ниже также могут вас заинтересовать
Комментариев нет:
Отправить комментарий