Viết yêu cầu HTTP bằng Curl

Cuộc sống của một nhà phát triển web bị bao phủ bởi những khó khăn. Điều đặc biệt khó chịu khi không rõ nguồn gốc của những khó khăn này. Đây có thể là sự cố khi gửi yêu cầu hoặc do phản hồi hoặc do thư viện của bên thứ ba hoặc API bên ngoài nó có lỗi không? Có rất nhiều tiện ích khác nhau có thể giúp cuộc sống của chúng ta dễ dàng hơn. Dưới đây là một số công cụ dòng lệnh, mà cá nhân tôi thấy là vô giá.

Xoăn
cURL là một chương trình truyền dữ liệu qua nhiều giao thức khác nhau, tương tự như wget. Sự khác biệt chính là theo mặc định, wget lưu vào một tệp, trong khi cURL xuất ra dòng lệnh. Điều này làm cho nó rất dễ dàng để xem nội dung trang web. Ví dụ: đây là cách nhanh chóng nhận được IP bên ngoài hiện tại của bạn:

$curl ifconfig.me 93.96.141.93
Tùy chọn -Tôi(hiển thị tiêu đề) và -TÔI(chỉ hiển thị tiêu đề) làm cURL công cụ tuyệt vờiđể gỡ lỗi các phản hồi HTTP và phân tích chính xác những gì máy chủ đang gửi cho bạn:

$curl -I habrahabr.ru HTTP/1.1 200 OK Máy chủ: nginx Ngày: Thứ năm, ngày 18 tháng 8 năm 2011 14:15:36 GMT Loại nội dung: văn bản/html; charset=utf-8 Kết nối: keep-alive Keep-alive: timeout=25
Tham số -L Cũng hữu ích, nó buộc cURL tự động theo dõi các chuyển hướng. cURL hỗ trợ xác thực HTTP, cookie, đường hầm proxy HTTP, cài đặt thủ công trong các tiêu đề và nhiều hơn thế nữa.

Cuộc vây hãm
Cuộc vây hãm là một công cụ để kiểm tra tải. Thêm vào đó, nó có một lựa chọn thuận tiện -g, rất giống với cuộn tròn –iL, nhưng ngoài ra nó còn hiển thị cho bạn các tiêu đề yêu cầu http. Đây là một ví dụ từ google.com (một số tiêu đề được loại bỏ để ngắn gọn):

$ bao vây -g www.google.com GET / HTTP/1.1 Máy chủ: www.google.com Tác nhân người dùng: JoeDog/1.00 (X11; I; Siege 2.70) Kết nối: đóng HTTP/1.1 302 Đã tìm thấy Vị trí: http:// www.google.co.uk/ Loại nội dung: text/html; charset=UTF-8 Máy chủ: gws Độ dài nội dung: 221 Kết nối: đóng GET / HTTP/1.1 Máy chủ: www.google.co.uk Tác nhân người dùng: JoeDog/1.00 (X11; I; Siege 2.70) Kết nối: đóng HTTP/ 1.1 200 OK Loại nội dung: text/html; bộ ký tự=ISO-8859-1 X-XSS-Protection: 1; mode=block Kết nối: đóng
Nhưng điều Siege thực sự tuyệt vời là kiểm tra tải. Giống như điểm chuẩn của Apache bụng, nó có thể gửi nhiều yêu cầu song song đến trang web và xem cách nó xử lý lưu lượng truy cập. Ví dụ sau đây cho thấy cách chúng tôi kiểm tra Google với 20 truy vấn trong 30 giây và sau đó in kết quả:

$ bao vây -c20 www.google.co.uk -b -t30s ... Việc dỡ bỏ cuộc bao vây máy chủ... xong. Giao dịch: 1400 lượt truy cập Khả dụng: 100,00 % Thời gian đã trôi qua: 29,22 giây Dữ liệu được truyền: 13,32 MB Thời gian phản hồi: 0,41 giây Tốc độ giao dịch: 47,91 trans/giây Thông lượng: 0,46 MB/giây Đồng thời: 19,53 Giao dịch thành công: 1400 Giao dịch thất bại: 0 Giao dịch dài nhất: 4.08 Giao dịch ngắn nhất: 0,08
Một trong những điều nhất chức năng hữu ích Siege là nó có thể hoạt động không chỉ với một địa chỉ mà còn với danh sách URL từ một tệp. Điều này rất tốt cho việc kiểm tra tải vì bạn có thể mô phỏng giao thông thực sự trên trang web, thay vì chỉ nhấn đi nhấn lại cùng một URL. Ví dụ: đây là cách sử dụng Siege để tải máy chủ bằng cách sử dụng địa chỉ từ nhật ký Apache của bạn:

$ cut -d " " -f7 /var/log/apache2/access.log > urls.txt $ bao vây -c -b -f urls.txt
Ngrep
Để phân tích lưu lượng truy cập nghiêm túc, có Wireshark với hàng nghìn cài đặt, bộ lọc và cấu hình. Ngoài ra còn có phiên bản dòng lệnh cá mập. Nếu không có nhiệm vụ đơn giản Tôi coi chức năng của Wireshark là dư thừa. Vì vậy, trừ khi tôi cần một vũ khí mạnh mẽ, tôi sử dụng . Nó cho phép bạn làm với gói mạng giống như grep thực hiện với các tập tin.

Đối với lưu lượng truy cập web, hầu như bạn sẽ luôn muốn sử dụng tham số -Wđể duy trì định dạng chuỗi cũng như tùy chọn -q, ẩn thông tin dư thừa về các gói không khớp. Đây là một lệnh ví dụ chặn tất cả các gói bằng lệnh GET hoặc POST:

Ngrep -q -W dòng nội dung "^(GET|POST) .*"
Bạn có thể thêm bộ lọc bổ sung cho các gói, chẳng hạn như theo máy chủ, địa chỉ IP hoặc cổng nhất định. Đây là bộ lọc cho tất cả lưu lượng truy cập đến và đi từ google.com, cổng 80, chứa từ “tìm kiếm”.

Ngrep -q -W byline "tìm kiếm" máy chủ www.google.com và cổng 80

URL c rất công cụ hữu ích dòng lệnh để truyền dữ liệu từ hoặc đến máy chủ. Curl hỗ trợ nhiều giao thức khác nhau như FILE, HTTP, HTTPS, IMAP, IMAPS, LDAP, DICT, LDAPS, TELNET, FTPS, GOPHER, RTMP, RTSP, SCP, SFTP, POP3, POP3S, SMB, SMBS, SMTP, SMTPS và TFTP .

cURL có thể được sử dụng theo nhiều cách khác nhau theo những cách thú vị. Với công cụ này bạn có thể tải xuống, tải lên và quản lý tập tin, kiểm tra địa chỉ của bạn E-mail, hoặc thậm chí cập nhật trạng thái của bạn trên một số trang web truyền thông xã hội hoặc kiểm tra thời tiết bên ngoài. Trong bài viết này chúng ta sẽ xem xét năm cách sử dụng cơ bản và hữu ích nhất công cụ cURL bất cứ gì .

1. Kiểm tra URL

Một trong những cách sử dụng cURL phổ biến và đơn giản nhất là in chính lệnh theo sau là URL bạn muốn kiểm tra

Cuộn tròn https://domain.ru

Lệnh này sẽ hiển thị nội dung của URL trên thiết bị đầu cuối của bạn

2. Lưu đầu ra URL vào một tệp

Trang web Curl -o https://domain.ru % Tổng % đã nhận % Xferd Trung bình Tốc độ thời gian Thời gian Thời gian Tải lên Dload hiện tại Tổng chi tiêu còn lại Tốc độ 100 41793 0 41793 0 0 275k 0 --:--:-- --:--:-- --:--:-- 2.9M

Trong ví dụ này, kết quả đầu ra sẽ được lưu vào một tệp có tên 'trang web' trong thư mục làm việc hiện tại.

3. Tải tệp lên bằng Curl

Bạn có thể tải xuống tệp bằng Curl bằng cách thêm tùy chọn -o vào lệnh. Nó được sử dụng để lưu tập tin vào Máy chủ cục bộ có cùng tên như trên máy chủ từ xa

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

Trong ví dụ này, kho lưu trữ 'file.zip' sẽ được tải xuống thư mục làm việc hiện tại.

Bạn cũng có thể tải tệp có tên khác lên bằng cách thêm tùy chọn -o vào cURL.

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

Vì vậy, kho lưu trữ “file.zip” sẽ được tải xuống và lưu dưới dạng “Archive.zip”.

cURL cũng có thể được sử dụng để tải xuống nhiều tệp cùng một lúc, như trong ví dụ bên dưới

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

Curl cũng có thể được sử dụng để tải tệp lên một cách an toàn qua SSH bằng lệnh sau

Curl -u người dùng sftp://server.domain.ru/path/to/file

Xin lưu ý rằng bạn phải sử dụng đường dẫn đầy đủ đến tệp bạn muốn tải xuống

4. Lấy thông tin từ HTTP header của website

Bạn có thể dễ dàng lấy thông tin tiêu đề HTTP từ bất kỳ trang web nào bằng cách thêm tùy chọn -I ('i') vào cURL.

Curl -I http://domain.ru HTTP/1.1 200 OK Ngày: Chủ Nhật, ngày 16 tháng 10 năm 2016 23:37:15 GMT Máy chủ: Apache/2.4.23 (Unix) X-Powered-By: Kết nối PHP/5.6.24 : đóng Loại nội dung: văn bản/html; bộ ký tự=UTF-8

5. Truy cập máy chủ FTP

Để truy cập máy chủ FTP bằng Curl, bạn cần sử dụng lệnh sau

Curl ftp://ftp.domain.ru --tên người dùng: mật khẩu

Curl sẽ kết nối với máy chủ FTP và liệt kê tất cả các file và thư mục trong thư mục chính của người dùng

Bạn có thể tải xuống tệp bằng FTP

Curl ftp://ftp.domain.ru/file.zip --tên người dùng: mật khẩu

và tải tập tin lên máy chủ FTP

Curl -T file.zip ftp://ftp.domain.ru/ --tên người dùng: mật khẩu

Bạn có thể kiểm tra trang Curl theo cách thủ công để xem mọi thứ Tùy chọn có sẵn cURL và chức năng của nó

người đàn ông uốn cong

Tái bút. Nếu bạn thích bài đăng này, hãy chia sẻ nó với bạn bè của bạn trên trong mạng xã hội bằng cách sử dụng các nút bên dưới hoặc đơn giản là để lại nhận xét. Cảm ơn.

Cuộc sống của một nhà phát triển web bị bao phủ bởi những khó khăn. Điều đặc biệt khó chịu khi không rõ nguồn gốc của những khó khăn này. Đây có phải là sự cố khi gửi yêu cầu hay phản hồi hay với thư viện của bên thứ ba hay là do API bên ngoài có lỗi? Có rất nhiều tiện ích khác nhau có thể giúp cuộc sống của chúng ta dễ dàng hơn. Dưới đây là một số công cụ dòng lệnh mà cá nhân tôi thấy vô giá.

Xoăn
cURL là một chương trình truyền dữ liệu qua nhiều giao thức khác nhau, tương tự như wget. Sự khác biệt chính là theo mặc định, wget lưu vào một tệp, trong khi cURL xuất ra dòng lệnh. Điều này làm cho nó rất dễ dàng để xem nội dung trang web. Ví dụ: đây là cách nhanh chóng nhận được IP bên ngoài hiện tại của bạn:

$curl ifconfig.me 93.96.141.93
Tùy chọn -Tôi(hiển thị tiêu đề) và -TÔI(chỉ hiển thị tiêu đề) làm cho cURL trở thành một công cụ tuyệt vời để gỡ lỗi phản hồi HTTP và phân tích chính xác những gì máy chủ đang gửi cho bạn:

$curl -I site HTTP/1.1 200 OK Máy chủ: nginx Ngày: Thứ năm, ngày 18 tháng 8 năm 2011 14:15:36 GMT Loại nội dung: text/html; charset=utf-8 Kết nối: keep-alive Keep-alive: timeout=25
Tham số -L Cũng hữu ích, nó buộc cURL tự động theo dõi các chuyển hướng. cURL hỗ trợ xác thực HTTP, cookie, tạo đường hầm thông qua proxy HTTP, cài đặt thủ công trong tiêu đề và hơn thế nữa.

Cuộc vây hãm
- một công cụ để kiểm tra tải. Thêm vào đó, nó có một lựa chọn thuận tiện -g, rất giống với cuộn tròn –iL, nhưng ngoài ra nó còn hiển thị cho bạn các tiêu đề yêu cầu http. Đây là một ví dụ từ google.com (một số tiêu đề được loại bỏ để ngắn gọn):

$ bao vây -g www.google.com GET / HTTP/1.1 Máy chủ: www.google.com Tác nhân người dùng: JoeDog/1.00 (X11; I; Siege 2.70) Kết nối: đóng HTTP/1.1 302 Đã tìm thấy Vị trí: http:// www.google.co.uk/ Loại nội dung: text/html; charset=UTF-8 Máy chủ: gws Độ dài nội dung: 221 Kết nối: đóng GET / HTTP/1.1 Máy chủ: www.google.co.uk Tác nhân người dùng: JoeDog/1.00 (X11; I; Siege 2.70) Kết nối: đóng HTTP/ 1.1 200 OK Loại nội dung: text/html; bộ ký tự=ISO-8859-1 X-XSS-Protection: 1; mode=block Kết nối: đóng
Nhưng điều Siege thực sự tuyệt vời là kiểm tra tải. Giống như điểm chuẩn của Apache bụng, nó có thể gửi nhiều yêu cầu song song đến trang web và xem cách nó xử lý lưu lượng truy cập. Ví dụ sau đây cho thấy cách chúng tôi kiểm tra Google với 20 truy vấn trong 30 giây và sau đó in kết quả:

$ bao vây -c20 www.google.co.uk -b -t30s ... Việc dỡ bỏ cuộc bao vây máy chủ... xong. Giao dịch: 1400 lượt truy cập Khả dụng: 100,00 % Thời gian đã trôi qua: 29,22 giây Dữ liệu được truyền: 13,32 MB Thời gian phản hồi: 0,41 giây Tốc độ giao dịch: 47,91 trans/giây Thông lượng: 0,46 MB/giây Đồng thời: 19,53 Giao dịch thành công: 1400 Giao dịch thất bại: 0 Giao dịch dài nhất: 4.08 Giao dịch ngắn nhất: 0,08
Một trong những tính năng hữu ích nhất của Siege là nó có thể hoạt động không chỉ với một địa chỉ duy nhất mà còn với danh sách URL từ một tệp. Điều này rất tốt cho việc kiểm tra tải vì bạn có thể mô phỏng lưu lượng truy cập trang web thực thay vì chỉ nhấn đi nhấn lại cùng một URL. Ví dụ: đây là cách sử dụng Siege để tải máy chủ bằng cách sử dụng địa chỉ từ nhật ký Apache của bạn:

$ cut -d " " -f7 /var/log/apache2/access.log > urls.txt $ bao vây -c -b -f urls.txt
Ngrep
Để phân tích lưu lượng truy cập nghiêm túc, có Wireshark với hàng nghìn cài đặt, bộ lọc và cấu hình. Ngoài ra còn có phiên bản dòng lệnh cá mập. Nhưng đối với những tác vụ đơn giản, tôi cho rằng chức năng của Wireshark là dư thừa. Vì vậy, trừ khi tôi cần một vũ khí mạnh mẽ, tôi sử dụng . Nó cho phép bạn làm điều tương tự với các gói mạng như grep thực hiện với các tập tin.

Đối với lưu lượng truy cập web, hầu như bạn sẽ luôn muốn sử dụng tham số -Wđể duy trì định dạng chuỗi cũng như tùy chọn -q, ẩn thông tin dư thừa về các gói không khớp. Đây là một lệnh ví dụ chặn tất cả các gói bằng lệnh GET hoặc POST:

Ngrep -q -W dòng nội dung "^(GET|POST) .*"
Bạn có thể thêm bộ lọc bổ sung cho các gói, chẳng hạn như theo máy chủ, địa chỉ IP hoặc cổng nhất định. Đây là bộ lọc cho tất cả lưu lượng truy cập đến và đi từ google.com, cổng 80, chứa từ “tìm kiếm”.

Ngrep -q -W byline "tìm kiếm" máy chủ www.google.com và cổng 80

Bài viết này giả định rằng bạn biết những điều cơ bản về mạng và HTML.

Khả năng viết kịch bản là điều cần thiết khi xây dựng một tác phẩm hay hệ thống máy tính. Khả năng mở rộng của hệ thống Unix bằng cách sử dụng tập lệnh shell và các chương trình khác nhau thực hiện các lệnh tự động là một trong những lý do khiến chúng thành công đến vậy.

Số lượng ứng dụng chuyển sang web ngày càng tăng đã dẫn đến chủ đề về tập lệnh HTTP ngày càng trở nên phổ biến. Các tác vụ quan trọng trong lĩnh vực này là tự động lấy thông tin từ Internet, gửi hoặc tải dữ liệu về máy chủ web, v.v.

Curl là một công cụ dòng lệnh cho phép bạn thực hiện nhiều loại thao tác và chuyển URL khác nhau. Bài viết này tập trung vào việc tạo các yêu cầu HTTP đơn giản. Giả định rằng bạn đã biết nơi để gõ

# cuộn tròn --help

# cuộn tròn --thủ công

để biết thông tin về cuộn tròn.

Curl không phải là một công cụ sẽ làm mọi thứ cho bạn. Nó tạo yêu cầu, nhận dữ liệu và gửi dữ liệu. Bạn có thể cần một loại "keo" nào đó để giữ mọi thứ lại với nhau, có lẽ một số loại ngôn ngữ kịch bản(ví dụ bash) hoặc một số lệnh gọi thủ công.

1. Giao thức HTTP

HTTP là giao thức được sử dụng khi nhận dữ liệu từ máy chủ web. Đây là một giao thức rất đơn giản được xây dựng trên TCP/IP. Giao thức cũng cho phép thông tin được gửi đến máy chủ từ máy khách bằng một số phương pháp, như sẽ được trình bày sau.

HTTP là chuỗi văn bản ASCII được gửi từ máy khách đến máy chủ để yêu cầu một số hành động. Khi nhận được yêu cầu, máy chủ sẽ phản hồi lại máy khách bằng một số dịch vụ chuỗi văn bản, rồi đến chính nội dung đó.

Sử dụng khóa chuyển đổi -v, bạn có thể xem lệnh nào mà cuộn tròn đang gửi đến máy chủ cũng như văn bản thông tin khác. Công tắc -v có lẽ là cách duy nhất để gỡ lỗi hoặc thậm chí hiểu được sự tương tác giữa Curl và máy chủ web.

2. URL

Định dạng URL (Bộ định vị tài nguyên thống nhất) chỉ định địa chỉ của một tài nguyên cụ thể trên Internet. Bạn có thể biết điều này, các URL ví dụ: http://curl.haxx.se hoặc https://yourbank.com.

3. Trang Get (GET)

Yêu cầu HTTP đơn giản và phổ biến nhất là lấy nội dung của URL. Một URL có thể liên kết đến một trang web, hình ảnh hoặc tệp. Máy khách gửi yêu cầu GET đến máy chủ và nhận tài liệu được yêu cầu. Nếu bạn chạy lệnh

# cuộn tròn http://curl.haxx.se

bạn sẽ nhận được kết quả đầu ra của trang web tới cửa sổ terminal của mình. Tài liệu HTML hoàn chỉnh có tại URL này.

Tất cả phản hồi HTTP đều chứa một tập hợp các tiêu đề thường bị ẩn. Để xem chúng cùng với tài liệu, hãy sử dụng tùy chọn Curl -i. Bạn cũng có thể chỉ yêu cầu các tiêu đề bằng cách sử dụng khóa chuyển -I (điều này sẽ buộc cuộn tròn để thực hiện yêu cầu HEAD).

4. Hình dạng

Biểu mẫu là cách cơ bản để trình bày trang web dưới dạng trang HTML với các trường trong đó người dùng nhập dữ liệu rồi nhấp vào nút "OK" hoặc "Gửi", sau đó dữ liệu sẽ được gửi đến máy chủ. Sau đó, máy chủ sử dụng dữ liệu nhận được và quyết định việc cần làm tiếp theo: tra cứu thông tin trong cơ sở dữ liệu, hiển thị địa chỉ đã nhập trên bản đồ, thêm thông báo lỗi hoặc sử dụng thông tin để xác thực người dùng. Tất nhiên, có một số chương trình ở phía máy chủ nhận dữ liệu của bạn.

4.1 NHẬN

Sử dụng biểu mẫu NHẬN phương thức NHẬN, ví dụ như sau:

Nếu bạn mở mã này trong trình duyệt của mình, bạn sẽ thấy một biểu mẫu có trương Văn bản và một nút có nhãn "OK". Nếu bạn nhập "1905" và nhấp vào OK, trình duyệt sẽ tạo một URL mới theo đó. URL sẽ được biểu diễn dưới dạng một chuỗi bao gồm đường dẫn của URL trước đó và một chuỗi như "junk.cgi?birthyear=1905&press=OK".

Ví dụ: nếu biểu mẫu nằm ở "www.hotmail.com/when/birth.html", thì việc nhấp vào OK sẽ đưa bạn đến URL "www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK " .

Số đông công cụ tìm kiếm làm việc theo cách này.

Để yêu cầu Curl tạo yêu cầu GET, bạn chỉ cần nhập nội dung bạn mong đợi từ biểu mẫu:

# cuộn tròn "www.hotmail.com/when/junk.cgi?birthyear=1905&press=OK"

4.2 BÀI ĐĂNG

Phương thức GET khiến tất cả thông tin đã nhập được hiển thị trong thanh địa chỉ trình duyệt của bạn. Điều này có thể hữu ích khi bạn cần đánh dấu một trang, nhưng rõ ràng đó là một bất lợi khi bạn nhập vào các trường biểu mẫu thông tin bí mật hoặc khi lượng thông tin được nhập vào các trường quá lớn (dẫn đến URL không thể đọc được).

Giao thức HTTP cung cấp phương thức POST. Với nó, khách hàng sẽ gửi dữ liệu riêng biệt với URL và do đó bạn sẽ không nhìn thấy nó trên thanh địa chỉ.

Biểu mẫu tạo yêu cầu POST tương tự như biểu mẫu trước đó:

Curl có thể tạo một yêu cầu POST với cùng dữ liệu như sau:

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

Yêu cầu POST này sử dụng "Ứng dụng loại nội dung/x-www-form-urlencoded", đây là phương pháp được sử dụng rộng rãi nhất.

Dữ liệu bạn gửi tới máy chủ phải được mã hóa chính xác, Curl sẽ không làm điều này cho bạn. Ví dụ: nếu bạn muốn dữ liệu chứa một khoảng trắng, bạn cần thay thế khoảng trắng bằng %20, v.v. Thiếu quan tâm đến vấn đề này - lỗi phổ biến, khiến dữ liệu được truyền không chính xác.

Trở lại năm 1995, người ta đã xác định phương pháp bổ sung truyền dữ liệu qua HTTP. Nó được ghi lại trong RFC 1867, vì vậy phương pháp này đôi khi được gọi là đăng bài RFC1867.

Phương pháp này chủ yếu được phát triển cho hỗ trợ tốt hơn Tải tập tin. Biểu mẫu cho phép người dùng tải tệp lên trông giống như thế này trong HTML:

Lưu ý rằng Loại nội dung được đặt thành nhiều phần/dữ liệu biểu mẫu.

Để gửi dữ liệu đến biểu mẫu này bằng cách sử dụng Curl, hãy nhập lệnh:

# cuộn tròn -F tải lên=@tên tệp cục bộ -F nhấn=OK

4.4 Các trường ẩn

Một cách phổ biến để truyền tải thông tin trạng thái trong các ứng dụng HTML là sử dụng các trường ẩn trong biểu mẫu. Các trường ẩn không được điền, chúng ẩn đối với người dùng và được truyền đi giống như các trường thông thường.

Một ví dụ đơn giản về biểu mẫu có một trường hiển thị, một trường ẩn và nút OK:

Để gửi yêu cầu POST bằng cách sử dụng Curl, bạn không cần phải suy nghĩ xem trường này có bị ẩn hay không. Đối với cuộn tròn, chúng đều giống nhau:

#curl -d "sinhnăm=1905&press=OK&person=daniel"

4.5 Tìm hiểu yêu cầu POST trông như thế nào

Khi bạn muốn điền vào biểu mẫu và gửi dữ liệu đến máy chủ bằng cách sử dụng Curl, bạn có thể muốn yêu cầu POST trông giống hệt như yêu cầu được thực hiện bằng trình duyệt.

Một cách dễ dàng để xem yêu cầu POST của bạn là lưu trang HTML có biểu mẫu vào đĩa, thay đổi phương thức thành GET và nhấp vào nút "Gửi" (bạn cũng có thể thay đổi URL mà dữ liệu sẽ được gửi tới).

Bạn sẽ thấy dữ liệu được đính kèm vào URL, được phân tách bằng ký tự "?", như mong đợi khi sử dụng biểu mẫu GET.

5. ĐẶT

Có lẽ, Cách tốt nhất tải dữ liệu lên máy chủ HTTP đang sử dụng PUT. Một lần nữa, điều này yêu cầu một chương trình (tập lệnh) ở phần phụ trợ biết phải làm gì và cách chấp nhận luồng HTTP PUT.

Gửi tệp đến máy chủ bằng cách sử dụng Curl:

# Curl -T tệp tải lên www.uploadhttp.com/receive.cgi

6. Xác thực

Xác thực - chuyển tên người dùng và mật khẩu đến máy chủ, sau đó nó sẽ kiểm tra xem bạn có quyền hoàn thành yêu cầu được yêu cầu hay không. Xác thực cơ bản (curl sử dụng theo mặc định) dựa trên văn bản thô, có nghĩa là tên người dùng và mật khẩu sẽ không được mã hóa mà chỉ bị “làm mờ” một chút bằng thuật toán Base64, khiến kẻ tấn công có thể tìm ra thông tin này trên đường dẫn giữa bạn và máy chủ HTTP.

Yêu cầu Curl sử dụng tên người dùng và mật khẩu:

#curl -u tên:mật khẩu www.secrets.com

Trang web có thể yêu cầu sử dụng một phương thức xác thực khác (xem những gì máy chủ ghi trong tiêu đề), trong những trường hợp này, bạn có thể sử dụng các công tắc --ntlm, --digest, --negotiate hoặc thậm chí --anyauth. Đôi khi việc truy cập vào máy chủ HTTP bên ngoài xảy ra thông qua proxy, việc này thường được thực hiện ở các công ty và hãng. Proxy HTTP có thể yêu cầu tên người dùng và mật khẩu của riêng bạn để truy cập Internet. Phím cuộn tương ứng:

#curl -U proxyuser:mật khẩu proxycurl.haxx.se

Nếu proxy yêu cầu xác thực bằng phương pháp NTLM, hãy chỉ định --proxy-ntlm, nếu là phương thức Digest thì --proxy-digest.

Nếu bạn không chỉ định mật khẩu trong tùy chọn -u và -U thì Curl sẽ tương tác yêu cầu bạn nhập mật khẩu đó.

Lưu ý rằng khi Curl đang chạy, chuỗi khởi động (cùng với khóa và mật khẩu) có thể hiển thị với những người dùng khác trên hệ thống của bạn trong danh sách tác vụ. Có nhiều cách để ngăn chặn điều này. Thêm về điều này dưới đây.

7. Người giới thiệu

Yêu cầu HTTP có thể bao gồm trường "người giới thiệu", cho biết người dùng đến từ URL nào tài nguyên này. Một số chương trình/tập lệnh kiểm tra trường "người giới thiệu" và không thực hiện yêu cầu nếu người dùng đến từ một trang không xác định. Mặc dù đây là một cách kiểm tra ngu ngốc nhưng nhiều tập lệnh vẫn sử dụng nó. Với tính năng cuộn tròn, bạn có thể đặt bất kỳ thứ gì vào trường "người giới thiệu" và do đó khiến nó thực hiện những gì bạn muốn.

Điều này được thực hiện như sau:

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

8. Đại lý người dùng

Tất cả các yêu cầu HTTP đều hỗ trợ trường "Tác nhân người dùng", chỉ định ứng dụng khách người dùng. Nhiều ứng dụng web sử dụng thông tin này để hiển thị trang theo cách này hay cách khác. Lập trình viên web tạo nhiều phiên bản của một trang cho người dùng các trình duyệt khác nhauđể cải thiện vẻ bề ngoài, việc sử dụng khác nhau tập lệnh javascript, vbscript, v.v.

Đôi khi bạn có thể thấy rằng Curl trả về một trang không giống với những gì bạn thấy trong trình duyệt của mình. Trong trường hợp này, việc sử dụng trường "Tác nhân người dùng" để đánh lừa máy chủ một lần nữa là điều thích hợp.

Ngụy trang cuộn tròn thành trình duyệt web IE trên máy Windows 2000:

#curl -A "Mozilla/4.0 (tương thích; MSIE 5.01; Windows NT 5.0)"

Tại sao không trở thành Netscape 4.73 trên máy Linux (PIII):

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

9. Chuyển hướng

Khi phản hồi yêu cầu của bạn, máy chủ có thể trả về dấu hiệu cho biết trình duyệt sẽ đi đến đâu tiếp theo để truy cập trang thay vì chính trang đó. trang mong muốn. Tiêu đề cho biết chuyển hướng đến trình duyệt như vậy là "Vị trí:".

Theo mặc định, Curl không đi đến địa chỉ được chỉ định trong "Location:", mà chỉ hiển thị trang như bình thường. Nhưng bạn có thể hướng nó như thế này:

#curl -L www.sitethatredirects.com

Nếu bạn đang sử dụng Curl để thực hiện các yêu cầu POST tới một trang web ngay lập tức chuyển hướng đến một trang khác, bạn có thể sử dụng kết hợp -L và -d/-F một cách an toàn. Curl sẽ tạo yêu cầu POST cho trang đầu tiên và sau đó là yêu cầu GET cho trang tiếp theo.

10. Bánh quy

VỚI sử dụng cookie trạng thái kiểm soát trình duyệt web ở phía máy khách. Cookie là một tên có nội dung đính kèm. Bằng cách gửi cookie, máy chủ sẽ cho khách hàng biết đường dẫn và tên máy chủ mà cookie sẽ được gửi vào lần tiếp theo, thời gian tồn tại của cookie và một số thông số khác.

Khi một máy khách kết nối với máy chủ tại địa chỉ được chỉ định trong cookie được chấp nhận, máy khách sẽ gửi cookie đó đến máy chủ (nếu thời gian tồn tại chưa hết hạn).

Nhiều ứng dụng và máy chủ sử dụng phương pháp này để kết hợp nhiều yêu cầu thành một phiên logic. Để Curl thực hiện chức năng này, chúng ta phải có khả năng lưu trữ và gửi cookie, giống như trình duyệt.

Cách đơn giản nhất để gửi cookie đến máy chủ khi nhận một trang bằng cách sử dụng Curl là thêm nút chuyển thích hợp trên dòng lệnh:

#curl -b "name=Daniel" www.cookiesite.com

Cookie được gửi dưới dạng tiêu đề HTTP thông thường. Điều này cho phép cuộn tròn lưu cookie bằng cách giữ nguyên các tiêu đề. Việc lưu cookie bằng cách sử dụng Curl được thực hiện bằng lệnh:

#curl -D headers_and_cookies www.cookiesite.com

(nhân tiện, để lưu cookie, tốt hơn nên sử dụng khóa chuyển -c, xem thêm ở bên dưới).

Curl có trình xử lý cookie đầy đủ tính năng, rất hữu ích khi bạn muốn kết nối lại với máy chủ và sử dụng cookie đã lưu lần trước (hoặc được sửa đổi thủ công). Để sử dụng cookie được lưu trữ trong một tệp, hãy gọi Curl như thế này:

#curl -b đã lưu trữ_cookies_in_file www.cookiesite.com

"Công cụ cookie" của Curl được bật khi bạn chỉ định khóa chuyển -b. Nếu bạn chỉ muốn cuộn tròn chấp nhận cookie, hãy sử dụng -b để chỉ định một tệp không tồn tại. Ví dụ: nếu bạn muốn Curl chấp nhận cookie từ một trang và sau đó thực hiện chuyển hướng (có thể cung cấp cookie mà nó vừa chấp nhận), bạn có thể gọi Curl như thế này:

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

Curl có thể đọc và ghi cookie ở định dạng Netscape và Mozilla. Cái này Một cách thuận tiện trao đổi cookie giữa các trình duyệt và tập lệnh tự động. Công tắc -b tự động xác định xem tập tin này bánh quy trình duyệt được chỉ định và xử lý nó cho phù hợp, đồng thời sử dụng khóa chuyển -c/--cookie-jar, bạn có thể buộc Curl viết cookie mới khi thao tác hoàn tất:

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

11. HTTPS

Có một số cách để bảo mật quá trình truyền HTTP của bạn. Giao thức nổi tiếng nhất giải quyết vấn đề này là HTTPS hoặc HTTP qua SSL. SSL mã hóa tất cả dữ liệu được gửi và nhận qua mạng, tăng khả năng thông tin của bạn được giữ bí mật.

Curl hỗ trợ các yêu cầu tới máy chủ HTTPS bằng thư viện OpenSSL miễn phí. Yêu cầu đang diễn ra theo cách thông thường:

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

11.1 Chứng chỉ

Trong thế giới HTTPS, bạn sử dụng chứng chỉ ngoài tên người dùng và mật khẩu để xác thực. Curl hỗ trợ các chứng chỉ phía máy khách. Tất cả các chứng chỉ đều bị khóa bằng cụm mật khẩu mà bạn cần nhập trước khi Curl có thể bắt đầu làm việc với chúng. Cụm từ khoá có thể được chỉ định trên dòng lệnh hoặc được nhập một cách tương tác. Chứng chỉ trong cuộn tròn được sử dụng như sau:

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

Curl cũng xác minh tính xác thực của máy chủ bằng cách kiểm tra chứng chỉ của máy chủ với chứng chỉ được lưu trữ cục bộ. Nếu có sự khác biệt, Curl sẽ từ chối kết nối. Để bỏ qua kiểm tra xác thực, hãy sử dụng khóa chuyển -k.

Hơn thông tin chi tiết về chứng chỉ có thể được tìm thấy tại http://curl.haxx.se/docs/sslcerts.html.

12. Tiêu đề yêu cầu tùy chỉnh

Bạn có thể cần thay đổi hoặc thêm các mục yêu cầu cá nhân Xoăn.

Ví dụ: bạn có thể thay đổi ĐĂNG yêu cầu tới PROPFIND và gửi dữ liệu dưới dạng "Loại nội dung: văn bản/xml" (thay vì Loại nội dung thông thường):

# cuộn tròn -d " " -H "Loại nội dung: text/xml" -X PROPFIND url.com

Bạn có thể xóa tiêu đề bằng cách chỉ định tiêu đề đó mà không có nội dung. Ví dụ: bạn có thể xóa tiêu đề "Máy chủ:", do đó làm cho yêu cầu "trống":

#curl -H "Máy chủ:" http://mysite.com

Bạn cũng có thể thêm tiêu đề. Máy chủ của bạn có thể cần tiêu đề "Destination:":

#curl -H "Đích: http://moo.com/nowhere" http://url.com

13. Gỡ lỗi

Điều thường xảy ra là trang web phản ứng với yêu cầu cuộn tròn không giống như yêu cầu của trình duyệt. Trong trường hợp này, bạn cần tạo độ cong giống với trình duyệt nhất có thể:

  • Sử dụng công tắc --trace-ascii để lưu báo cáo chi tiết truy vấn để sau đó nghiên cứu chúng một cách chi tiết và hiểu được vấn đề.
  • Đảm bảo bạn kiểm tra cookie và sử dụng chúng nếu cần thiết (đọc -b và lưu -c)
  • Chỉ định một trong những trình duyệt phổ biến mới nhất trong trường "tác nhân người dùng"
  • Điền vào trường "người giới thiệu" như trình duyệt thực hiện
  • Nếu bạn đang sử dụng yêu cầu POST, hãy đảm bảo rằng tất cả các trường được gửi theo cùng thứ tự với trình duyệt (xem điểm 4.5 ở trên)

Một trợ giúp hữu ích trong nhiệm vụ khó khăn này là plugin LiveHTTPHeader dành cho Mozilla/Firefox, cho phép bạn xem tất cả các tiêu đề mà trình duyệt này gửi và nhận (ngay cả khi sử dụng HTTPS).

Cách tiếp cận ở cấp độ thấp hơn là nắm bắt lưu lượng HTTP trên mạng bằng các chương trình như ethereal hoặc tcpdump, sau đó phân tích những tiêu đề nào được trình duyệt nhận và gửi (HTTPS khiến cách tiếp cận này không hiệu quả).

Bất kỳ ai muốn hiểu giao thức HTTP đều phải đọc RFC 2616.

RFC 2396 giải thích cú pháp URL.

RFC 2109 xác định cách hoạt động của cookie.

RFC 1867 xác định định dạng Bài đăng Tải lên Tệp.

http://openssl.planetmirror.com - Trang chủ Dự án OpenSSL

http://curl.haxx.se - trang chủ dự án cURL

Trình bày để bạn chú ý Khóa học mới từ đội Codeby- "Thử nghiệm thâm nhập các ứng dụng Web từ đầu." Lý thuyết tổng quát, Chuẩn bị môi trường, Làm mờ và tạo dấu vân tay thụ động, Làm mờ chủ động, Lỗ hổng, Khai thác sau, Công cụ, Kỹ thuật xã hội và nhiều hơn thế nữa.


Nguồn:

cURL là một gói phần mềm, bao gồm tiện ích dòng lệnh và thư viện để truyền dữ liệu bằng cú pháp URL.

cURL hỗ trợ nhiều giao thức, bao gồm DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet và TFTP.

Tải lên tập tin riêng biệt

Lệnh sau sẽ lấy nội dung của URL và hiển thị nó trong đầu ra tiêu chuẩn(tức là trong thiết bị đầu cuối của bạn).

Curl https://mi-al.ru/ > mi-al.htm % Tổng % đã nhận % Xferd Tốc độ trung bình Thời gian Thời gian Thời gian tải lên Dload hiện tại Tổng chi tiêu còn lại Tốc độ 100 14378 0 14378 0 0 5387 0 --: --:- - 0:00:02 --:--:-- 5387

Lưu đầu ra cURL vào một tệp

  • -o(o chữ thường) kết quả sẽ được lưu trong tệp được chỉ định trên dòng lệnh
  • -O(chữ hoa O) tên tệp sẽ được lấy từ URL và sẽ được sử dụng để lưu dữ liệu đã nhận.
$curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html

Trang gettext.html bây giờ sẽ được lưu trong một tệp có tên 'mygettext.html'. Khi chạy lệnh cuộn với tùy chọn -o, nó sẽ hiển thị thanh tiến trình tải xuống như sau.

% Tổng % Đã nhận % Xferd Tốc độ trung bình Thời gian Thời gian Thời gian tải lên Dload hiện tại Tổng chi tiêu còn lại Tốc độ 66 1215k 66 805k 0 0 33060 0 0:00:37 0:00:24 0:00:13 45900 100 1215k 100 1215k 0 0 39474 0 0:00:31 0:00:31 --:--:-- 68987

Khi bạn sử dụng Curl -O (chữ O hoa), nó sẽ tự lưu nội dung vào một tệp có tên ‘gettext.html’ trên máy cục bộ.

$curl -O http://www.gnu.org/software/gettext/manual/gettext.html

Lưu ý: Khi Curl cần ghi dữ liệu vào terminal, nó sẽ tắt thanh tiến trình để tránh nhầm lẫn với dữ liệu được in. Chúng ta có thể sử dụng tùy chọn '>'|'-o'|'-O' để chuyển kết quả sang một tệp.

Truy xuất nhiều tập tin cùng một lúc

Chúng ta có thể tải xuống nhiều tệp cùng một lúc bằng cách chỉ định tất cả các URL trên dòng lệnh.

Cuộn tròn -O URL1 -O URL2

Lệnh bên dưới sẽ tải xuống cả index.html và gettext.html và lưu chúng với cùng tên trong thư mục hiện tại.

Curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html

Xin lưu ý, khi chúng tôi tải xuống nhiều tệp từ cùng một máy chủ như được hiển thị ở trên, Curl sẽ cố gắng sử dụng lại kết nối.

Theo dõi các tiêu đề Vị trí HTTP với tùy chọn -L

Theo mặc định, CURL không tuân theo Vị trí HTTP trong tiêu đề (chuyển hướng). Khi trang web được yêu cầu được chuyển đến một vị trí khác, phản hồi tương ứng sẽ được gửi trong tiêu đề Vị trí HTTP.

Ví dụ: khi ai đó nhập google.com vào trình duyệt từ quốc gia của họ, họ sẽ tự động được chuyển hướng đến 'google.co.xx'. Điều này được thực hiện dựa trên tiêu đề Vị trí HTTP như hiển thị bên dưới.

Cuộn tròn https://www.google.com/?gws_rd=ssl 302 Đã di chuyển

302 Đã di chuyển

Tài liệu này đã được chuyển đến đây.

Kết quả đầu ra ở trên cho biết tài liệu được yêu cầu đã được chuyển đến 'http://www.google.co.th/'.

Bạn có thể yêu cầu Curl đi theo các chuyển hướng, việc này được thực hiện bằng cách sử dụng tùy chọn -L như hiển thị bên dưới. Bây giờ sẽ được tải nguồn html từ https://www.google.co.th/?gws_rd=ssl.

Curl -L https://www.google.com/?gws_rd=ssl

Tiếp tục/Gia hạn bản tải xuống trước đó

Sử dụng tùy chọn -C, bạn có thể tiếp tục tải xuống đã bị dừng vì lý do nào đó. Điều này sẽ hữu ích khi tải xuống các tệp lớn không thành công.

Nếu chúng ta nói '-C -' thì Curl sẽ tìm nơi tiếp tục tải xuống. Chúng tôi cũng có thể chỉ định '-C<смещение>'. Phần bù byte được chỉ định sẽ bị bỏ qua từ đầu tệp nguồn.

Bắt đầu tải lớn bằng cách cuộn tròn và nhấn Ctrl-C để dừng quá trình tải xuống giữa chừng.

$curl -O http://www.gnu.org/software/gettext/manual/gettext.html ############## 20,1%

Việc tiêm đã dừng lại ở mức 20,1%. Sử dụng “curl -C -”, chúng ta có thể tiếp tục tải từ nơi chúng ta đã dừng lại. Bây giờ quá trình tải xuống sẽ tiếp tục từ 20,1%.

Curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html ############### 21,1%

Giới hạn tốc độ dữ liệu

Bạn có thể giới hạn tốc độ truyền dữ liệu bằng tùy chọn -limit-rate. Bạn có thể vượt qua tốc độ tối đa như một lý lẽ.

$ cuộn tròn --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html

Lệnh trên sẽ giới hạn tốc độ truyền ở mức 1000 byte/giây. cuộn tròn có thể sử dụng tốc độ cao hơn ở mức cao nhất. Nhưng tốc độ trung bình sẽ xấp xỉ 1000 byte/giây.

Dưới đây là thanh tiến trình cho lệnh trên. Bạn có thể thấy tốc độ hiện tại là khoảng 1000 byte.

% Tổng số % đã nhận % Xferd Tốc độ trung bình Thời gian Thời gian Tải lên Dload hiện tại Tổng chi tiêu còn lại Tốc độ 1 1215k 1 13601 0 0 957 0 0:21:40 0:00:14 0:21:26 999 1 1215k 1 14601 0 0 960 0 0:21:36 0:00:15 0:21:21 999 1 1215k 1 15601 0 0 962 0 0:21:34 0:00:16 0:21:18 999

Chỉ tải một tập tin nếu nó được thay đổi trước/sau một thời gian nhất định

Bạn có thể lấy các tệp đã thay đổi sau một thời gian nhất định bằng cách sử dụng tùy chọn -z trong cuộn tròn. Điều này sẽ hoạt động cho cả FTP và HTTP.

$curl -z 20-08-14

Lệnh trên sẽ chỉ tải yy.html nếu nó được sửa đổi gần đây hơn ngày và giờ đã cho.

Lệnh trên sẽ tải file.html nếu nó đã được sửa đổi trước ngày và giờ nhất định.

Nhập 'mancur_getdate' để tìm hiểu thêm về các cú pháp được hỗ trợ khác nhau cho biểu thức ngày.

Truyền xác thực HTTP trong cURL

Đôi khi các trang web yêu cầu tên người dùng và mật khẩu để xem nội dung của chúng. Sử dụng tùy chọn -u, bạn có thể chuyển các thông tin xác thực này từ cURL đến máy chủ web như hiển thị bên dưới.

$curl -u tên người dùng:URL mật khẩu

Lưu ý: Theo mặc định, Curl sử dụng cơ bản Xác thực HTTP. Chúng tôi có thể chỉ định các phương thức xác thực khác bằng cách sử dụng -ntlm | -tiêu.

Tải tập tin lên từ máy chủ FTP

cURL cũng có thể được sử dụng để tải tập tin từ máy chủ FTP. Nếu đường dẫn FTP được chỉ định là một thư mục thì theo mặc định, danh sách các tệp trong đó sẽ được hiển thị.

$curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/xss.php

Lệnh trên sẽ tải xuống tệp xss.php từ máy chủ ftp và lưu nó vào thư mục cục bộ.

$curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/

Ở đây URL đề cập đến một thư mục. Do đó, cURL sẽ liệt kê các file và thư mục tại URL đã cho.

Danh sách/Tải bằng cách sử dụng phạm vi.

CURL hỗ trợ các phạm vi được chỉ định trong URL. Khi một phạm vi được đưa ra, các tệp tương ứng trong phạm vi đó sẽ được tải. Điều này sẽ hữu ích khi tải xuống các gói từ các trang nhân bản FTP.

$curl ftp://ftp.uk.debian.org/debian/pool/main//

Lệnh trên sẽ liệt kê tất cả các gói trong phạm vi a-z trong thiết bị đầu cuối.

Tải tập tin lên máy chủ FTP

Curl cũng có thể được sử dụng để tải lên máy chủ FTP với tùy chọn -T.

$curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com

Lệnh trên sẽ tải tệp có tên myfile.txt lên máy chủ FTP. Bạn cũng có thể tải lên nhiều tệp cùng một lúc bằng cách sử dụng phạm vi.

$curl -u ftpuser:ftppass -T "(file1,file2)" ftp://ftp.testserver.com

Tùy chọn chúng ta có thể sử dụng “.” để nhận từ đầu vào tiêu chuẩn và chuyển nó đến máy từ xa.

$curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt

Lệnh trên sẽ nhận đầu ra từ người dùng từ đầu vào tiêu chuẩn và lưu trữ nội dung trên máy chủ ftp dưới dạng 'myfile_1.txt'.

Bạn có thể chỉ định '-T' cho mỗi URL và mỗi cặp tệp địa chỉ sẽ xác định nội dung cần tải lên ở đâu

Thêm thông tin với tính chi tiết và tùy chọn theo dõi tăng lên

Bạn có thể tìm hiểu chuyện gì đang xảy ra bằng cách sử dụng tùy chọn -v. Tùy chọn -v kích hoạt chế độ bằng lời nói và sẽ in chi tiết.

Curl -v https://www.google.co.th/?gws_rd=ssl

Lệnh trên sẽ xuất ra như sau

* URL được tạo lại thành: https://www.google.co.th/?gws_rd=ssl * Tên máy chủ cũ Không tìm thấy trong bộ đệm DNS * Đang thử 27.123.17.49... * Đã kết nối với www.google.co.th (27.123.17.49) cổng 80 (#0) > GET / HTTP/1.1 > User-Agent:curl/7.38.0 > Host : www.google.co.th > Chấp nhận: */* >< HTTP/1.1 200 OK < Date: Fri, 14 Aug 2015 23:07:20 GMT < Expires: -1 < Cache-Control: private, max-age=0 < Content-Type: text/html; charset=windows-874 < P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." * Server gws is not blacklisted < Server: gws < X-XSS-Protection: 1; mode=block < X-Frame-Options: SAMEORIGIN < Set-Cookie: PREF=ID=1111111111111111:FF=0:TM=1439593640:LM=1439593640:V=1:S=FfuoPPpKbyzTdJ6T; expires=Sun, 13-Aug-2017 23:07:20 GMT; path=/; domain=.google.co.th ... ... ...

Nếu bạn cần thêm thông tin chi tiết, thì bạn có thể sử dụng tùy chọn -trace. Tùy chọn -trace sẽ kích hoạt bãi chứa đầy truy tìm tất cả dữ liệu đến/đi cho tập tin đã cho

=> Gửi tiêu đề, 169 byte (0xa9) 0000: 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a GET / HTTP/1.1.. 0010: 55 73 65 72 2d 41 67 65 6e 74 3a 2 0 63 75 72 6c Tác nhân người dùng: cuộn tròn .. 0060: 2e 32 2e 33 2e 34 20 6c 69 62 69 64 6e 2f 31 2e .2.3.4 libidn/1. 0070: 31 35 20 6c 69 62 73 73 68 32 2f 31 2e 32 2e 36 15 libssh2/1.2.6 0080: 0d 0a 48 6f 73 74 3a 20 77 77 77 2e 67 6f 6f 67 .. Máy chủ: www.goog 0090 : 6c 65 2e 63 6f 2e 69 6e 0d 0a 41 63 63 65 70 74 le.co.xx..Chấp nhận 00a0: 3a 20 2a 2f 2a 0d 0a 0d 0a: */*.... == Thông tin: HTTP 1.0 , giả sử ở gần sau phần thân<= Recv header, 17 bytes (0x11) 0000: 48 54 54 50 2f 31 2e 30 20 32 30 30 20 4f 4b 0d HTTP/1.0 200 OK. 0010: 0a

Các tùy chọn theo dõi và mức độ chi tiết tăng lên sẽ hữu ích khi việc cuộn tròn không thành công vì lý do nào đó và chúng tôi không biết tại sao.

Chúng tôi nhận được định nghĩa của một từ và bản dịch của nó bằng giao thức DICT

Bạn có thể xem danh sách các từ điển có sẵn như thế này:

Curl dict://dict.org/show:db

Bạn có thể dịch một từ từ tiếng Anh sang tiếng Nga như thế này:

Curl dict://dict.org/d:girl:fd-eng-rus 220 pan.alephnull.com dictd 1.12.1/rf trên Linux 3.14-1-amd64 <[email được bảo vệ]> 250 ok 150 1 định nghĩa đã truy xuất được 151 "girl" fd-eng-rus "Từ điển FreeDict Anh-Nga ver. 0.3" girl /gəːl/ girl. 250 được 221 tạm biệt

Bạn có thể tìm thêm thông tin về DICT bằng cách đọc RFC2229.

Sử dụng proxy để tải xuống tệp

Chúng tôi có thể yêu cầu cURL sử dụng proxy cho một số hoạt động nhất định, việc này được thực hiện bằng tùy chọn -x. Chúng ta cần thiết lập máy chủ proxy và cổng.

$ Curl -x proxysever.test.com:3128 https://www.google.co.in/?gws_rd=ssl

Gửi email bằng giao thức SMTP trong cuộn tròn

cURL cũng có thể được sử dụng để gửi email bằng giao thức SMTP. Bạn cần chỉ định địa chỉ gửi, địa chỉ đến và địa chỉ IP của máy chủ thư như hiển thị bên dưới.

$ Curl --mail-từ [email được bảo vệ]--mail-rcpt [email được bảo vệ] smtp://mailserver.com

Khi nhập lệnh, người dùng sẽ bắt đầu chờ nhập dữ liệu cho chữ cái. Khi bạn gõ xong tin nhắn của mình, hãy gõ. (dấu chấm) ở dòng cuối cùng và email sẽ được gửi ngay lập tức.

Chủ đề: Kiểm tra Đây là thư kiểm tra.

Người bảo lãnh là người trung gian đáng tin cậy giữa các Bên tham gia trong quá trình giao dịch.