Създаване на падащ списък в html. Дървовидни списъци с различни вариации

Създаване на падащ списък в html. Дървовидни списъци с различни вариации

c URL е много полезен инструмент за команден ред за прехвърляне на данни от или към сървър. Curl поддържа различни протоколи като FILE, HTTP, HTTPS, IMAP, IMAPS, LDAP, DICT, LDAPS, TELNET, FTPS, GOPHER, RTMP, RTSP, SCP, SFTP, POP3, POP3S, SMB, SMBS, SMTP, SMTPS и TFTP .

cURL може да се използва по много различни и интересни начини. С този инструмент можете да изтегляте, качвате и управлявате файлове, да проверявате адреса си електронна поща, или дори да актуализирате статуса си в някои уебсайтове на социални медии или да проверите времето навън. В тази статия ще разгледаме пет от най-полезните и основни употреби на инструмента cURL на всеки .

1. Проверете URL

Една от най-честите и най-прости употреби на cURL е отпечатването на самата команда, последвана от URL адреса, който искате да тествате

Curl https://domain.ru

Тази команда ще покаже съдържанието на URL адреса на вашия терминал

2. Запазете URL изхода във файл

Curl -o уебсайт https://domain.ru % Общо % Получени % Xferd Средна скорост Време Време Време Текущо Dload Качване Общо изразходвана лява скорост 100 41793 0 41793 0 0 275k 0 --:--:-- - -:-- :-- --:--:-- 2.9M

В този пример изходът ще бъде записан във файл с име „website“ в текущата работна директория.

3. Изтеглете файлове с Curl

Можете да изтегляте файлове с Curl, като добавите опцията -o към командата. Използва се за записване на файлове в локален сървърсъс същите имена като на отдалечения сървър

Curl -O https://domain.ru/file.zip

В този пример архивът 'file.zip' ще бъде изтеглен в текущата работна директория.

Можете също да качите файл с различно име, като добавите опцията -o към cURL.

Curl -o archive.zip https://domain.ru/file.zip

Така архивът „file.zip“ ще бъде изтеглен и записан като „Archive.zip“.

cURL може да се използва и за изтегляне на множество файлове едновременно, както е показано в примера по-долу

Curl -O https://domain.ru/file.zip -O https://domain.com/file2.zip

Curl може да се използва и за сигурно изтегляне на файлове през SSH със следната команда

Curl -u потребител sftp://server.domain.ru/path/to/file

Моля, имайте предвид, че трябва да използвате пълен пъткъм файла, който искате да изтеглите

4. Вземете информация от HTTP хедъра на уебсайта

Можете лесно да получите информация за HTTP заглавка от всеки уебсайт, като добавите опцията -I ('i') към cURL.

Curl -I http://domain.ru HTTP/1.1 200 OK Дата: Sun, 16 Oct 2016 23:37:15 GMT Сървър: Apache/2.4.23 (Unix) X-Powered-By: PHP/5.6.24 Връзка : затворете Content-Type: text/html; charset=UTF-8

5. Достъп до FTP сървър

За достъп до FTP сървъра с помощта на Curl трябва да използвате следната команда

Curl ftp://ftp.domain.ru --user потребителско име:парола

Curl ще се свърже с FTP сървъра и ще изведе всички файлове и директории в домашната директория на потребителя

Можете да изтеглите файла чрез FTP

Curl ftp://ftp.domain.ru/file.zip --потребителско име:парола

и качете файла на FTP сървъра

Curl -T file.zip ftp://ftp.domain.ru/ --user потребителско име:парола

Можете да проверите страницата Curl ръчно, за да видите всички налични опции на cURL и нейната функционалност

мъж-къдрица

PS.Ако тази публикация ви е харесала, моля, споделете я с приятелите си в социалните мрежикато използвате бутоните по-долу или просто оставете коментар. Благодаря ти.

Тази статия предполага, че сте запознати с основите на работата в мрежа и езика HTML.

Способността за писане на скриптове е от съществено значение за изграждането на стока компютърна система. Разширяемостта на Unix системите чрез шел скриптове и различни програми, които изпълняват автоматизирани команди, е една от причините, поради които те са толкова успешни.

Нарастващият брой приложения, които се преместват в мрежата, доведе до факта, че темата за HTTP скриптовете става все по-търсена. Важни задачи в тази област са автоматичното извличане на информация от Интернет, изпращане или изтегляне на данни към уеб сървъри и др.

Curl е инструмент за команден ред, който ви позволява да правите URL манипулация и предаване на различни видове. Тази статия се фокусира върху правенето на прости HTTP заявки. Предполага се, че вече знаете къде да наберете

# curl --помогнете

# curl --ръчно

за информация относно къдриците.

Curl не е инструмент, който ще направи всичко вместо вас. Той създава заявки, получава данни и изпраща данни. Може да се нуждаете от малко "лепило", за да държите всичко заедно, може би някакъв скриптов език (като bash) или няколко ръчни извиквания.

1. HTTP протокол

HTTP е протоколът, използван при получаване на данни от уеб сървъри. Това е много прост протокол, който е изграден върху TCP/IP. Протоколът също така позволява информацията да бъде изпратена до сървъра от клиента чрез няколко метода, както ще бъде показано по-нататък.

HTTP са низове от ASCII текст, изпратени от клиент към сървър, за да поискат някакво действие. Когато бъде получена заявка, сървърът отговаря на клиента с няколко служебни текстови реда и след това с действителното съдържание.

Използвайки опцията curl -v, можете да видите кои команди curl изпраща на сървъра, както и друг информационен текст. Ключът -v е може би единственият начин за отстраняване на грешки или дори за разбиране на взаимодействието между curl и уеб сървъра.

2.URL адрес

URL форматът (Uniform Resource Locator - универсален адрес на ресурс) указва адреса на конкретен ресурс в Интернет. Вероятно знаете това, примери за URL адреси са http://curl.haxx.se или https://yourbank.com.

3. Вземете (GET) страница

Най-простата и често срещана HTTP заявка е да получите съдържанието на URL. URL адресът може да препраща към уеб страница, изображение или файл. Клиентът изпраща GET заявка до сървъра и получава искания документ. Ако изпълните командата

# curl http://curl.haxx.se

ще получите уеб страница, показана в прозореца на вашия терминал. Пълният HTML документ, съдържащ се на този URL.

Всички HTTP отговори съдържат набор от заглавки, които обикновено са скрити. За да ги видите заедно със самия документ, използвайте опцията curl -i. Можете също така да поискате само заглавки с превключвателя -I (което ще принуди curl да направи заявка HEAD).

4. Форми

Формулярите са основният начин за представяне на уебсайт като HTML страница с полета, в които потребителят въвежда данни и след това щраква върху бутона OK или Изпращане, след което данните се изпращат до сървъра. След това сървърът използва получените данни и решава как да продължи: потърсете информацията в базата данни, покажете въведения адрес на картата, добавете съобщение за грешка или използвайте информацията за удостоверяване на потребителя. Разбира се, има програма от страната на сървъра, която приема вашите данни.

4.1 ВЗЕМЕТЕ

Формулярът GET използва метода GET, както следва:

Ако отворите този код в браузъра си, ще видите формуляр с текстово поле и бутон с надпис „ОК“. Ако въведете „1905“ и щракнете върху OK, браузърът ще генерира нов URL адрес, който да следва. URL адресът ще бъде низ, състоящ се от пътя на предишния URL адрес и низ като "junk.cgi?birthyear=1905&press=OK".

Например, ако формулярът се намира на „www.hotmail.com/when/birth.html“, тогава щракването върху бутона OK ще ви отведе до URL адреса „www.hotmail.com/when/junk.cgi?birthyear= 1905&натисни=OK" .

Мнозинство търсачкиработете по този начин.

За да накарате curl да генерира GET заявка, просто въведете това, което очаквате от формуляра:

# curl "www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK"

4.2 ПУБЛИКАЦИЯ

Методът GET кара цялата въведена информация да се показва в адресната лента на вашия браузър. Това може да е добре, когато трябва да маркирате страница, но е очевиден недостатък, когато въвеждате секретна информация в полетата на формуляра или когато количеството информация, въведено в полетата, е твърде голямо (което води до нечетлив URL).

HTTP протоколът предоставя метода POST. При него клиентът изпраща данни отделно от URL адреса и затова няма да ги виждате в адресната лента.

Формулярът, който генерира POST заявката, е подобен на предишния:

Curl може да формира POST заявка със същите данни, както следва:

# curl -d "year=1905&press=%20OK%20" www.hotmail.com/when/junk.cgi

Тази POST заявка използва "Content-Type application/x-www-form-urlencoded", което е най-широко използваният начин.

Данните, които изпращате на сървъра, трябва да бъдат правилно кодирани, curl няма да го направи вместо вас. Например, ако искате данните да съдържат интервал, трябва да замените този интервал с %20 и т.н. Липсата на внимание към този проблем е често срещана грешка, поради която данните не се предават както трябва.

Още през 1995 г. е определено допълнителен начинпрехвърляне на данни през HTTP. Той е документиран в RFC 1867, поради което понякога се нарича RFC1867 публикуване.

Този метод е предназначен главно за по-добра поддръжка на качване на файлове. Формата, която позволява на потребителя да качи файл, изглежда така в HTML:

Имайте предвид, че Content-Type е зададен на multipart/form-data.

За да изпратите данни към такъв формуляр с помощта на curl, въведете командата:

# къдря -F [имейл защитен]-Fpress=ОК

4.4 Скрити полета

Често срещан начин за предаване на информация за състоянието в HTML приложения е чрез използване на скрити полета във формуляри. Скритите полета не се попълват, те са невидими за потребителя и се предават по същия начин като обикновените полета.

Прост пример за формуляр с едно видимо поле, едно скрито поле и бутон OK:

За да изпратите POST заявка с curl, не е нужно да мислите дали полето е скрито или не. За къдриците всички са еднакви:

# curl -d "година на раждане=1905&press=OK&person=daniel"

4.5 Разберете как изглежда една POST заявка

Когато искате да попълните формуляр и да изпратите данни до сървъра с помощта на curl, вероятно искате POST заявката да изглежда точно като тази, направена с помощта на браузъра.

Лесен начин да видите вашата POST заявка е да запазите HTML страницата на формуляра на диск, да промените метода на GET и да натиснете бутона „Изпращане“ (можете също да промените URL адреса, на който ще бъдат изпратени данните).

Ще видите, че данните са добавени към URL адреса, разделени със знаци "?", както се очаква при използване на GET формуляри.

5. СЛОЖЕТЕ

може би, По най-добрия начинкачване на данни към HTTP сървър е да се използва PUT. Отново, това изисква програма (скрипт) в задната част, която знае какво да прави и как да приеме HTTP PUT поток.

Изпратете файл до сървъра с помощта на curl:

# curl -T uploadfile www.uploadhttp.com/receive.cgi

6. Удостоверяване

Автентификация - подаване на потребителско име и парола към сървъра, след което той проверява дали имате право да изпълните заявената заявка. Основното удостоверяване (което curl използва по подразбиране) е базирано на ясен текст, което означава, че потребителското име и паролата няма да бъдат криптирани, а само леко „замаскирани“ с алгоритъма Base64, което позволява на атакуващите да открият тази информация по пътя между вас и HTTP сървъра.

Кажете на curl да използва потребителско име и парола:

# curl -u име:парола www.secrets.com

Сайтът може да изисква използването на различен метод за удостоверяване (вижте какво пише сървърът в заглавките), в тези случаи можете да използвате ключовете --ntlm, --digest, --negotiate или дори --anyauth. Понякога достъпът до външни HTTP сървъри става чрез прокси, както често се прави в компании и фирми. HTTP прокси може да изисква собствено потребителско име и парола за достъп до интернет. Подходящ ключ за къдрици:

# curl -U проксипотребител:проксипарола curl.haxx.se

Ако проксито изисква NTLM удостоверяване, посочете --proxy-ntlm, ако методът Digest, тогава --proxy-digest.

Ако не посочите парола в опциите -u и -U, curl ще ви поиска интерактивно.

Обърнете внимание, че когато curl работи, низът за изпълнение (и заедно с него ключовете и паролите) може да са видими за други потребители на вашата система в списъка със задачи. Има начини това да се предотврати. Повече за това по-долу.

7. Референт

Една HTTP заявка може да включва поле "referer", което показва URL адреса, от който потребителят е стигнал до този ресурс. Някои програми/скриптове проверяват полето "referer" и не изпълняват заявката, ако потребителят е дошъл от непозната страница. Въпреки че това е глупав начин за проверка, много скриптове все пак го използват. С curl можете да поставите всичко в полето "referer" и по този начин да го принудите да прави това, което искате.

Това става по следния начин:

# curl -e http://curl.haxx.se daniel.haxx.se

8. Потребителски агент

Всички HTTP заявки поддържат поле "User-Agent", което указва клиентското приложение на потребителя. Много уеб приложения използват тази информация, за да покажат страницата по един или друг начин. Уеб програмистите създават множество версии на страница за потребителите различни браузърида подобря външен вид, използвайки различни javascript скриптове, vbscript и др.

Понякога може да откриете, че curl връща страница, която не е това, което сте видели в браузъра си. В този случай е подходящо да използвате полето "Потребителски агент", за да измамите отново сървъра.

Маскирайте къдря като Internet Explorerна машина с Windows 2000:

# curl -A "Mozilla/4.0 (съвместим; MSIE 5.01; Windows NT 5.0)"

Защо не станете Netscape 4.73 на Linux машина (PIII):

# curl -A "Mozilla/4.73 (X11; U; Linux 2.2.15 i686)"

9. Пренасочвания

В отговор на вашата заявка сървърът, вместо самата страница, може да върне индикация къде следва да отиде браузърът, за да стигне до желаната страница. Заглавката, която казва на браузъра това пренасочване, е „Местоположение:“.

По подразбиране curl не отива на адреса, посочен в "Location:", а просто показва страницата както обикновено. Но можете да го изпратите така:

# curl -L www.sitethatredirects.com

Ако използвате curl за POST заявки към сайт, който незабавно пренасочва към друга страница, можете безопасно да използвате -L и -d/-F. Curl ще направи POST заявка за първата страница и след това GET заявка за следващата.

10. Бисквитки

Бисквитките позволяват на уеб браузърите да контролират състоянието от страна на клиента. Бисквитката е име с прикачено съдържание. Сървърът, като изпраща бисквитки, казва на клиента пътя и името на хоста, където следва да бъдат изпратени бисквитките, съобщава продължителността на живота на бисквитката и някои други параметри.

Когато клиент се свърже със сървъра на адреса, посочен в получената бисквитка, клиентът изпраща тази бисквитка на сървъра (ако срокът на експлоатация не е изтекъл).

Много приложения и сървъри използват този метод за комбиниране на множество заявки в една логическа сесия. За да може curl да изпълнява и тази функция, трябва да можем да запазваме и изпращаме бисквитки, точно както правят браузърите.

Най-лесният начин да изпратите бисквитка до сървъра, когато извличате страница с curl, е да добавите съответния ключ към командна линия:

# curl -b "име=Даниел" www.cookiesite.com

Бисквитките се изпращат като обикновени HTTP заглавки. Това позволява на curl да съхранява бисквитки чрез съхраняване на заглавки. Запазването на бисквитки с curl се извършва с командата:

# curl -D headers_and_cookies www.cookiesite.com

(между другото, по-добре е да използвате превключвателя -c, за да запазите бисквитки, повече за това по-долу).

curl има пълнофункционален манипулатор на бисквитки, който е полезен, когато искате да се свържете отново със сървъра и да използвате бисквитките, които сте запазили последния път (или ръчно изработени). За да използвате бисквитки, съхранени във файл, извикайте curl по следния начин:

# curl -b stored_cookies_in_file www.cookiesite.com

Машината за бисквитки curl е активирана, когато посочите превключвателя -b. Ако искате curl да приема само бисквитки, използвайте -b с файл, който не съществува. Например, ако искате curl да приеме бисквитки от страница и след това да последва пренасочване (може би раздаване на току-що приетата бисквитка), можете да извикате curl така:

# curl -b nada -L www.cookiesite.com

Curl може да чете и записва бисквитки във формат Netscape и Mozilla. Това удобен начинобмен на бисквитки между браузъри и автоматични скриптове. Ключът -b автоматично определя дали даден файлбисквитки на посочените браузъри и ги обработва съответно, а с помощта на опцията -c/--cookie-jar можете да принудите curl да напише нова бисквитка, когато операцията приключи:

# curl -b cookies.txt -c newcookies.txt www.cookiesite.com

11. HTTPS

Има няколко начина да защитите вашите HTTP предавания. Най-известният протокол, който решава този проблем, е HTTPS или HTTP през SSL. SSL криптира всички данни, изпратени и получени по мрежата, което увеличава вероятността вашата информация да остане тайна.

Curl поддържа заявки към HTTPS сървъри благодарение на безплатната OpenSSL библиотека. Възникват заявки по обичайния начин:

# curl https://that.secure.server.com

11.1 Сертификати

В света на HTTPS използвате сертификати за удостоверяване в допълнение към потребителското име и паролата. Curl поддържа сертификати от страна на клиента. Всички сертификати са заключени с парола, която трябва да въведете, преди curl да започне да работи с тях. Ключова фразаможе да се посочи или в командния ред, или да се въведе интерактивно. Сертификатите в curl се използват по следния начин:

# curl -E mycert.pem https://that.secure.server.com

Curl също така удостоверява сървъра, като проверява сертификата на сървъра срещу локално съхранен такъв. Несъответствието ще доведе до отказ на curl да се свърже. За да игнорирате удостоверяването, използвайте ключа -k.

| Повече ▼ подробна информациясертификатите могат да бъдат намерени на http://curl.haxx.se/docs/sslcerts.html.

12. Заглавки на произволни заявки

Може да се наложи да промените или добавите елементи на отделни заявки за къдрици.

Например, можете да промените POST заявкана PROPFIND и изпратете данните като "Content-Type: text/xml" (вместо обичайния Content-Type):

# curl -d " " -H "Тип съдържание: текст/xml" -X PROPFIND url.com

Можете да премахнете всяко заглавие, като го посочите без съдържание. Например, можете да премахнете заглавката "Host:", като по този начин направите заявката "празна":

# curl -H "Хост:" http://mysite.com

Можете също да добавите заглавки. Вашият сървър може да се нуждае от заглавка „Destination:“:

# curl -H "Дестинация: http://moo.com/nowhere" http://url.com

13. Отстраняване на грешки

Често се случва даден сайт да отговаря на заявки за curl по различен начин от заявките на браузъра. В този случай трябва да асимилирате curl в браузъра колкото е възможно повече:

  • Използвайте превключвателя --trace-ascii, за да запазите подробен отчет на заявките, така че да можете да ги разгледате подробно и да разберете проблема.
  • Уверете се, че проверявате за бисквитки и ги използвате, когато е необходимо (превключвател за четене -b и ключ за запазване -c)
  • Посочете един от най-новите популярни браузъри в полето "user-agent".
  • Попълнете полето "referer", както го прави браузърът
  • Ако използвате POST заявки, уверете се, че всички полета са предадени в същия ред като браузъра (вижте по-горе, точка 4.5)

Добър помощник в тази трудна задача е плъгинът Mozilla/Firefox LiveHTTPHeader, който ви позволява да видите всички хедъри, които този браузър изпраща и получава (дори когато използвате HTTPS).

Подход на по-ниско ниво е да се улови HTTP трафик в мрежата с помощта на програми като ethereal или tcpdump и след това да се анализира какви хедъри са получени и изпратени от браузъра (HTTPS прави този подход неефективен).

RFC 2616 е задължително четиво за всеки, който иска да разбере HTTP протокола.

RFC 2396 обяснява синтаксиса на URL адреса.

RFC 2109 определя как работят бисквитките.

RFC 1867 дефинира формата за публикуване на качване на файл.

http://openssl.planetmirror.com - Начална страницапроекта OpenSSL

http://curl.haxx.se - начална страница на проекта cURL

Реален практически пример: трябва да рестартирате рутера (модема), за да промените IP адреса. За да направите това, трябва: да влезете в рутера, да отидете на страницата за поддръжка и да кликнете върху бутона "Рестартиране". Ако това действие трябва да се извърши няколко пъти, тогава процедурата трябва да се повтори. Съгласете се, не искате да правите тази рутина ръчно всеки път. cURL ви позволява да автоматизирате всичко това. Само с няколко cURL команди можете да получите разрешение и да изпълните задачата на рутера.

  • cURL е удобен за получаване на данни от уебсайтове на командния ред.
Друг практически пример: искаме да внедрим показването на обща статистика за няколко сайта. Ако използвате cURL, тогава това става напълно тривиална задача: използвайки cURL, ние удостоверяваме автентичността в услугата за събиране на статистически данни (ако е необходимо), след това (отново, използвайки cURL команди) получаваме необходимите страници, анализираме данните, от които се нуждаем; процедурата се повтаря за всички наши обекти, след което сумираме и извеждаме крайния резултат.

Тези. Случаите на използване на cURL са съвсем реални, въпреки че в повечето случаи програмистите, които го използват за своите програми, се нуждаят от cURL.

CURL поддържа много протоколи и методи за оторизация, може да прехвърля файлове, работи правилно с бисквитки, поддържа SSL сертификати, проксита и много повече.

cURL в PHP и командния ред

Можем да използваме cURL по два основни начина: в PHP скриптове и в командния ред.

За да активирате cURL в PHP на сървъра, трябва да разкоментирате реда във файла php.ini

Разширение=php_curl.dll

И след това рестартирайте сървъра.

В Linux трябва да инсталирате пакета curl.

В Debian, Ubuntu или Linux Mint:

$ sudo apt-get install curl


Във Fedora, CentOS или RHEL:

$ sudo yum инсталирайте curl

За да видим ясно разликата в използването в PHP и в командния ред, ще изпълним едни и същи задачи два пъти: първо в PHP скрипти след това на командния ред. Нека се опитаме да не се объркаме.

Получаване на данни с cURL

Получаване на данни с cURL в PHP

PHP пример:

Всичко е много просто:
$target_url- адреса на сайта, който ни интересува. След адреса на сайта можете да поставите двоеточие и да добавите адреса на порта (ако портът е различен от стандартния).

curl_init- инициализира нова сесия и връща манипулатор, който в нашия пример е присвоен на променлива $ch.

След това изпълняваме cURL заявката с функцията curl_exec, на който се предава дескриптор като параметър.

Всичко е много логично, но когато този скрипт се изпълни, съдържанието на сайта ще се покаже на нашата страница. Но какво, ако не искаме да показваме съдържанието, а искаме да го запишем в променлива (за по-нататъшна обработка или анализиране).

Нека добавим малко към нашия скрипт:

0) ( echo "curl error: " . curl_error($ch); ) curl_close($ch); ?>

Имаме линия curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);.

curl_setopt- задава опции. Пълен списъкопции можете да намерите на тази страница:

Скрит от гостите

$response_data = curl_exec($ch);

Сега стойността на скрипта се присвоява на променливата $response_data, която може да се използва за по-нататъшни операции. Например, можете да покажете съдържанието му.

Шевове

If (curl_errno($ch) > 0) ( echo "curl error: " . curl_error($ch); )

се използват за отстраняване на грешки в случай на грешки.

Получаване на данни с cURL на командния ред

В командния ред просто въведете

където вместо mi-al.ru- адреса на вашия сайт.

Ако трябва да копирате данните в променлива и да не показвате резултата на екрана, направете следното:

Temp="curl mi-al.ru"

Някои данни обаче все още се показват:

За да не се показват, добавете ключа :

Temp="curl -s mi-al.ru"

Можете да видите какво е записано:

ехо $temp | по-малко

Основно и HTTP удостоверяване

Удостоверяването, просто казано, е въвеждането на потребителско име и парола.

Основното удостоверяване е удостоверяване на сървъра. За целта се създават два файла: .htaccessИ .htpasswd

Съдържанието на файла .htaccess е нещо подобно

AuthName "Само за регистрирани потребители!" AuthType Basic изисква валиден потребител AuthUserFile /home/freeforum.biz/htdocs/.htpassw


Съдържанието на файла .htpasswd е нещо подобно:

Миал:CRdiI.ZrZQRRc

Тези. хеш за вход и парола.

Когато се опитате да получите достъп до защитена с парола папка, браузърът ще покаже нещо подобно:

HTTP удостоверяването е случаят, когато въвеждаме потребителско име и парола във формуляр на уебсайт. Именно тази автентификация се използва при влизане в поща, форуми и др.

cURL Basic Authentication (PHP)

Има сайт

Скрит от гостите

Нека опитаме нашия първоначален скрипт:

0) ( echo "curl error: " . curl_error($ch); ) else ( echo $response_data; ) curl_close($ch); ?>

Въпреки че скриптът смята, че няма грешка, изходният резултат изобщо не ни харесва:

Добавяме два реда:

curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, "ru-board:ru-board");

В първия ред задаваме вида на удостоверяването - основно. Вторият ред съдържа името и паролата, разделени с двоеточие (в нашия случай името и паролата са същите - ru-board). Оказа се така:

0) ( echo "curl error: " . curl_error($ch); ) else ( echo $response_data; ) curl_close($ch); ?> Опитвам: 30946 Страхотно! Основно cURL удостоверяване (на командния ред) Същото може да се постигне на командния ред с един ред: curl -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/

Не забравих да посоча типа удостоверяване, просто в cURL основният тип удостоверяване е по подразбиране.

На командния ред всичко се оказа толкова бързо, че от разочарование написах тази програма. Тя се свързва със сайта и изтегля последната актуализация:

Temp=`curl -s -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/ | grep -E -o "Update_FED_201(1).(2).(2).7z" | уникален | опашка -n 1`; curl -o $temp -u ru-board:ru-board http://62.113.208.29/Update_FED_DAYS/$temp

Могат да се добавят само още няколко команди:

  • разопаковане на архива в посочената директория;
  • стартиране на актуализации на ConsultantPlus (това са актуализации за него);
  • можете да приложите проверка - дали последната налична актуализация вече е изтеглена или се е появила нова;
  • добавете всичко към Cron за ежедневни актуализации.
cURL HTTP удостоверяване

cURL HTTP удостоверяване в PHP

Трябва да знаем:

  • адрес, на който да изпратите данни за удостоверяване
  • метод за изпращане GET или POST
  • Влизам
  • парола
Понякога тези данни не са достатъчни. Нека да го разберем.

Адресът, на който искате да изпратите данни, може да бъде взет от формуляра за удостоверяване. Например:

Разглеждаме имота действие. Тези. крайната страница е login.php. Имаме нужда от пълен адрес, като

Скрит от гостите

Тук намираме и метода за изпращане: метод="пост"

Също така знам данните за вход и паролата: admin и qwerasdfzxcv
Тези. низ се предава на сървъра от формата с помощта на метода POST. Теоретично, предишният ни скрипт, в който добавихме нов ред, трябва да работи. Тези. трябва да се извърши удостоверяване.

0) ( echo "curl error: " . curl_error($ch); ) else () curl_close($ch); ?>

Нов ред в скрипта

curl_setopt($ch, CURLOPT_POSTFIELDS, "LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv");

Тук curl_setopt- вече познатата функция за настройка на опции за cURL, CURLOPT_POSTFIELDSе името на опцията, която задаваме. CURLOPT_POSTFIELDSсъдържа всички данни, които се изпращат чрез метода POST. Е, самата линия LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv- това са същите данни, които предаваме.

Ако внимателно разгледате формуляра, можете да видите, че той съдържа и скрити полета. И данните могат да бъдат обработени или допълнени с JavaScript "s. Можете да изучавате всичко това, но аз предпочитам по-простия начин.

Използвам Wireshark. Тази програма е предназначена за подслушване (прихващане) на трафик. И именно в него е много удобно да се види какво точно се предава на сайта.

Гледайте това малко видео:


Тези. с адреса, на който се прехвърлят данните, предположих. Но предаденият низ се оказа много по-сложен.

Въведох правилния параметър и също така леко промених скрипта, така че не само да влезе, но и да получи нещо от рутера:

0) ( echo "Curl error: " . curl_error($ch); ) else ( $target_url2 = "http://188.35.8.64:8080/bsc_wlan.php"; $ch2 = curl_init($target_url2); curl_setopt($ ch2, CURLOPT_RETURNTRANSFER, 1); $response_data2 = curl_exec($ch2); preg_match("|f.ssid.value = "(.*)";|", $response_data2, $results2); $results2 = str_replace("f .ssid.value = "", "", $results2); $results2 = str_replace("";", "", $results2); echo "Име на Wifi мрежа: $резултати2
"; preg_match("|f_wpa.wpapsk1.value(.*)";|", $response_data2, $results3); $results3 = str_replace("f_wpa.wpapsk1.value", "", $results3); $results3 = str_replace("="", "", $results3); $results3 = str_replace("";", "", $results3); echo "Парола за Wi-Fi мрежа: $резултати3"; ) curl_close($ch); ?>

Между другото, ако собственикът актуализира паролата (но не актуализира фърмуера), тогава новата парола винаги може да се види на

Скрит от гостите

(Това е добре известна уязвимост в рутерите D-Link DIR-300, D-Link DIR-320 и D-Link DAP-1353).

cURL HTTP удостоверяване на командния ред

Вече знаем пълния адрес, както и низа, който ще бъде предаден. Следователно всичко е просто:

Curl --data "ACTION_POST=LOGIN&FILECODE=&VERIFICATION_CODE=&LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv&login=Log+In+&VER_CODE=" http://188.35.8.64:8080/login.php

Мисля, че всичко е ясно, защото вече разгледахме тези условия. Ако някой не е ясен - попитайте в коментарите.

Пример за използване на cURL за получаване и анализ на данни би бил следният набор от команди:

Curl -s --data "ACTION_POST=LOGIN&FILECODE=&VERIFICATION_CODE=&LOGIN_USER=admin&LOGIN_PASSWD=qwerasdfzxcv&login=Log+In+&VER_CODE=" http://188.35.8.64:8080/login.php > /dev/null && echo -e "nn " && echo "Име на Wi-Fi мрежа" && curl -s http://188.35.8.64:8080/bsc_wlan.php | grep -E "f.ssid.value = "(.)*";" | sed "s/f.ssid.value = "//" | sed "s/";//" && echo "Парола за Wi-Fi мрежа" && curl -s http://188.35.8.64:8080/bsc_wlan.php | grep -E "f_wpa.wpapsk1.(.)*";" | sed "s/f_wpa.wpapsk1.value//" | sed "s/";//" | sed "s/="//"

Би било по-правилно да напишете заглавните данни така: „Сложни“ случаи на разрешение. Тези. поставете думата "комплекс" в кавички. Те изглеждат сложни само на пръв поглед, когато не е ясно: къде се изпраща изпращането, какви са имената на полетата, какво точно се изпраща и т.н.

Но всъщност всички те се свеждат до методите POST или GET. За да разберете какво точно се изпраща, можете да запазите страницата с формуляра на вашия диск и да закачите функцията за показване на данните, генерирани за изпращане, на бутона за изпращане. Или още по-просто - като мен, Wireshark "ом.

Ако данните са правилни и удостоверяването не се случи, тогава трябва да копаете в следните посоки:

  • задайте правилния референтен низ
  • задайте "правилния" низ на потребителския агент.
Всичко това може да се направи с основни методи на cURL, но няма да се спирам на това. Урокът вече се оказа голям, но исках да покажа и няколко трика с cURL.

Съвети и трикове cURL

cURL и получаване на бисквитки освен CURLOPT_COOKIEJAR

Мисля, че вече е ясно, че cURL обработва бисквитките правилно - запазва ги, използва ги, когато сървърът ги поиска и т.н. Но понякога бисквитките трябва да бъдат запазени. Има опция CURLOPT_COOKIEJAR за това, но не винаги е възможно да се използва. Това е нашият първи трик.

Понякога, поради особеностите на PHP настройките на сървъра, такива опции като CURLOPT_COOKIEJAR (позволява ви да запазите получените бисквитки във файл) и CURLOPT_COOKIEFILE (позволява ви да използвате бисквитки от файл) не са достъпни за нас. защото те казват, че с помощта на тези опции ще можем да изтеглим всеки файл от техния сървър. Ето решението на този проблем:

1) Не използвайте CURLOPT_FOLLOWLOCATION
2) Използвайте curl_setopt($ch, CURLOPT_HEADER, 1)
3) Събираме бисквитки от заглавката по следния начин:

preg_match_all("|Set-Cookie: (.*);|U", $content, $results); $cookies = implode(";", $results);

4) Задайте ги с помощта на curl_setopt($ch, CURLOPT_COOKIE, $cookies);

Втори съвет. От нападатели можем да се превърнем в жертви. За да не станем жертва на атака от човек по средата, ние правим това.

Моля всички, спрете да задавате настройката CURLOPT_SSL_VERIFYPEER на false или 0. Ако вашата PHP инсталация няма актуален набор от CA root сертификати, изтеглете един от уебсайта на curl и го запазете на вашия сървър:

Скрит от гостите

След това задайте пътя във вашия файл php.ini, например в Windows:

curl.cainfo=c:phpcacert.pem

Деактивирането на CURLOPT_SSL_VERIFYPEER позволява атака човек по средата (MITM), която не искаме!

Е, един последен съвет за днес. Знаете ли, че са възможни голям брой асинхронни curl заявки?

За това можете да използвате curl_multi_init. Подробности и примерен код в официалната документация

Скрит от гостите

Скрит от гостите


Относно cURL в командния ред

Скрит от гостите


За четене на руски е подготвена и втората част от урока cURL: "".
cURL е инструмент за команден ред за получаване или изпращане на данни чрез синтаксис на URL.

Ако работите в бюро за помощ, трябва да можете да използвате cURL команди за отстраняване на проблеми с уеб приложения. cURL е помощна програма за различни платформи за Windows, MAC и UNIX.
Следват някои често използвани примери за синтаксис.

1. Проверка на свързаността към URL

Ако сте на UNIX система и се опитвате да се свържете с външен URL адрес, първо проверете дали имате достъп до ресурса с curl. За да направите това, използвайте следната команда:

#curl yoururl.com

2. Запазване на изходния URL/URI във файл

# curl yoururl.com > yoururl.html

Например:

# curl 74.125.68.100 >/tmp/google.html

Примерът по-горе ще запази цялото съдържание от хост 74.125.68.100 в /tmp/google.html.

3. Показване на заглавката на заявката и отговора

Ако искате да сте сигурни, че получавате очакваната заглавка на заявката и отговора, използвайте следната команда:

# curl -v yoururl.com

Например:

# curl -v 74.125.68.100 * Предстои да се свърже() към 74.125.68.100 порт 80 (#0) * Опитва се 74.125.68.100... * Свързан към 74.125.68.100 (74.125.68.100) порт 80 (#0) > GET / HTTP/1.1 > Потребителски агент: curl/7.29.0 > Хост: 74.125.68.100 > Приемане: */* >< HTTP/1.1 200 OK

4. Изтеглете с максимална скорост

Ако трябва да разберете колко време отнема изтеглянето при определена скорост, използвайте следната команда:

# curl --limit-rate 2000B

Например:

# curl --limit-rate 2000B 74.125.68.100

5. Използване на прокси за свързване

Ако искате да проверите дали може да се използва прокси сървър, използвайте следния синтаксис:

# curl --proxyyourproxy:порт http://yoururl.com

6. Проверка на URL адреса с въвеждането на заглавието

За да коригирате конкретен проблем, можете да използвате Curl, за да вмъкнете вашите данни в заглавката. Разгледайте следния пример на заявка с Content-Type:

# curl --header "Content-Type: application/json" http://yoururl.com

Молим curl да предаде Content-Type като application/json към заглавката на заявката.

7. Добавете допълнителна заглавка

Можете да добавите заглавка към заявка, като използвате синтаксиса - заглавка.

# curl --header "X-CustomHeader: GeekFlare" http://yoururl.com

Например:

# curl -v --header "X-CustomHeader: GeekFlare" 74.125.68 * Предстои да се свърже() към 74.125.68.100 порт 80 (#0) * Опитва се 74.125.68.100... * Свързан към 74.125.68.100 (74.125. 68.100) порт 80 (#0) > GET / HTTP/1.1 > Потребителски агент: curl/7.29.0 > Хост: 74.125.68.100 > Приемане: */* > X-CustomHeader: GeekFlare >< HTTP/1.1 200 OK

8. Отворете само заглавката на отговора

Ако искате бързо да проверите заглавката на отговора, тогава можете да използвате следния синтаксис, за да го направите.

# curl --head http://yoururl.com

# curl -I 74.125.68.100 HTTP/1.1 200 OK Дата: неделя, 18 януари 2015 г. 08:31:22 GMT Изтича: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=ISO-8859-1 Set-Cookie: NID=67=SpnXKTDUhw7QGakIeLxmDSF; expires=пон, 20-юли-2015 08:31:22 GMT; път=/; домейн=.; HttpOnly P3P: CP="Това не е политика за P3P! Вижте http://www.google.com/support/accounts/bin/answer.py?hl=bg&answer=151657 за повече информация." Сървър: gws X-XSS-Защита: 1; mode=block X-Frame-Options: SAMEORIGIN Alternate-Protocol: 80:quic,p=0.02 Transfer-Encoding: chunked Accept-Ranges: none Vary: Accept-Encoding #

9. Свържете HTTPS / SSLURL адрес и игнорирайте всички грешки в SSL сертификата

Ако имате нужда от достъп до https URL, който извежда грешка в сертификата поради несъответствие на име на хост, можете да използвате следния синтаксис.

curl --несигурен https://yoururl.com

10. Свързване чрез специфичен протокол (SSL/TLS)

За да се свържете към URL само с SSL V2/V3 или TLS протокол, използвайте следния синтаксис.

За да се свържете чрез SSLV2:

# curl --sslv2 https://yoururl.com

За да се свържете чрез SSLV3:

# curl --sslv3 https://yoururl.com

За да се свържете чрез TLS:

# curl --tlsv1 https://yoururl.com

11. Изтеглете файл от FTP сървър

С cURL можете да изтеглите файл от ftp сървър, като предоставите потребителско име и парола.

# curl -u потребител:парола -O ftp://ftpurl/style.css

Винаги можете да използвате "-v" с всеки синтаксис за подробен изход.

Използване на cURL онлайн

Да възможно е. Можете да изпълните cURL дистанционно със следните инструменти.
Онлайн CURL е компактен инструмент за извличане на онлайн URL адрес и добавяне на следните параметри.

Connect-timeout --cookie --data --header --head --location --max-time --proxy --request --user --url --user-agent

Примерен резултат:


Конструктор на cURL команден ред - позволява ви да създадете cURL команда, която може да се използва за въвеждане на информация в потребителския интерфейс.