Memo

メモ > サーバ > 各論: ネットワーク > curlでアクセスする

■curlでアクセスする
■GETの例 ■POSTの例
$ curl -X POST -d '{ "data": { "post1": "xxx", "post2": "yyy", "post3": "zzz" }, "jsonapi": { "version": "1.0" } }' 'https://example.com/request.php?get1=xxx&get2=yyy&get3=zzz' --header 'x-api-key: ABCDEFG'
※URLに「&」を含む場合、全体をシングルクォートで囲う。もしくは「\」でエスケープする http://example.com/request.php?get1=xxx&get2=yyy&get3=zzz ↓ 'http://example.com/request.php?get1=xxx&get2=yyy&get3=zzz' http://example.com/request.php?get1=xxx\&get2=yyy\&get3=zzz データの受信は、以下のようなPHPプログラムを作成すれば確認できる
<?php print_r($_GET); print_r($_POST); print_r($_SERVER);
curl option 覚え書き - Qiita https://qiita.com/takayukioda/items/edf371b3566bea64d046 「-X」や「-d」などの意味も解説されている。また省略しない場合(long option)のパラメーターも紹介されている curlコマンドの使い方 〜GET、POST、REST(json)の確認と、windowsでの利用手順 https://viral-community.com/security/curl-8263/ curlで複数パラメータのGETを投げる - Qiita https://qiita.com/nobu_121/items/52bb9d5961aa3e017813 PHPで任意のHTTPヘッダをリクエストから取得する方法 - Qiita https://qiita.com/sakatam/items/f06a1da5682c3bfe870e ■ヘッダのみ取得
$ curl -I -s http://example.com/ $ curl -s -I -L http://example.com/ | grep ^Location
■SSLの証明書エラーを無視して接続する
$ curl https://localhost:10000 --insecure
上のように「--insecure」を指定すると、エラーを無視して接続できる ■Basic認証 通常のリクエストは以下のとおり URLに認証情報を埋め込むことができる 「-u」でユーザ名とパスワードを指定することもできる
$ curl -u 'username:password' https://example.com/
Authorizationでユーザ名とパスワードを指定することもできる ただしこの場合、ユーザ名とパスワードはBase64エンコードしたものを指定する必要がある
$ echo -n 'username:password' | base64 dXNlcm5hbWU6cGFzc3dvcmQ= $ curl https://example.com/ -H "Authorization:Basic dXNlcm5hbWU6cGFzc3dvcmQ="
「-H」は「--header」と指定しても同じ
$ curl https://example.com/ --header "Authorization:Basic dXNlcm5hbWU6cGFzc3dvcmQ="
curlでBasic認証する方法3つ - と、記号を含むとき注意点など - tweeeetyのぶろぐ的めも https://www.tweeeety.blog/entry/2021/11/08/124745 curl で Basic 認証(Authorization ヘッダを利用した場合) - ようへいの日々精進XP https://inokara.hateblo.jp/entry/2017/11/23/184942 ■ユーザーエージェント指定 以下いずれかのように指定することで、ユーザーエージェント「HeadlessChrome」を付与できる
$ curl -A "HeadlessChrome" https://example.com/ $ curl -H "User-Agent: HeadlessChrome" https://example.com/
■hosts指定 curlでhost指定・名前解決して実行 - 一応技術ブログ的なやつです https://iettty.hatenablog.jp/entry/2018/10/23/235142 hostsファイルを設定しなくても、以下で維持知的なドメインの変更ができる
$ curl --resolve example.com:80:203.0.113.1 http://example.com/
以下でアクセスを確認できる
$ curl --resolve refirio.net:80:203.0.113.1 http://refirio.net/ $ curl --resolve test1.refirio.net:80:203.0.113.1 http://test1.refirio.net/ $ curl --resolve test2.refirio.net:80:203.0.113.1 http://test2.refirio.net/
SSLだとエラーになる …が、これは 203.0.113.1 自体がSSLを受け付けるようになっていないだけだと思われる また確認したい
$ curl --resolve refirio.net:443:203.0.113.1 https://refirio.net/ curl: (7) Failed to connect to refirio.net port 443: Connection refused
■FTP FTP接続もできる SFTPやSSH接続の方法は判らなかったが、それはcurlコマンドではなくsshコマンドやsftpコマンドを使うべき…ということかもしれない
>curl -u refirio:abcd1234 ftp://refirio.net/test/ -rw-rw-r-- 1 512 501 24 Feb 27 2014 test1.php -rw-rw-r-- 1 512 501 24 Mar 11 2015 test2.php 以下略
FTPサーバとのやりとりをcurlコマンドで行う - Qiita https://qiita.com/mom0tomo/items/384da47dee08a21c1ce5 curl で FTP over TLS/SSL なサーバーへアクセスする https://gist.github.com/keijiro/4015735 ■メール送信 メールを送ろう。curlで。 - Blanktar https://blanktar.jp/blog/2016/01/curl-smtp-mail 以下は、ロリポップのSMTPで mailto@gmail.com 宛に送信する例 あらかじめテキストファイルでメール内容を作成しておき、それを使って送信する
$ cat mail.txt
To: mailto@gmail.com From: info@example.com Subject: テストメール テスト。 これはテストメールです。
$ curl smtps://smtp.lolipop.jp:465 --mail-from 'info@example.com' --mail-rcpt 'mailto@gmail.com' -u 'info@example.com' -T mail.txt Enter host password for user 'info@example.com': % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 133 0 0 100 133 0 450 --:--:-- --:--:-- --:--:-- 450
以下は、GmailのSMTPで mailto@gmail.com 宛に送信する例 あらかじめテキストファイルでメール内容を作成しておき、それを使って送信する
$ cat mail.txt
To: mailto@gmail.com From: example@gmail.com Subject: テストメール テスト。 これはテストメールです。
$ curl smtps://smtp.gmail.com:465 --mail-rcpt 'mailto@gmail.com' -u 'example@gmail.com' -T mail.txt Enter host password for user 'example@gmail.com': % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 141 0 0 100 141 0 62 0:00:02 0:00:02 --:--:-- 62

Advertisement