-
Notifications
You must be signed in to change notification settings - Fork 4
/
27.txt
488 lines (373 loc) · 24.5 KB
/
27.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
[46] [DFN[[RUBYB[プロキシ]@en[proxy]]]]は、[[アプリケーション層プロトコル]]を中継するものです。
[[Web]] では、 [[HTTP]] や [[FTP]] などの通信を[[ネットワーク]]境界を超えさせるために使ったり、
[[キャッシュ]]や[[アプリケーション層]]の[[経路制御]]などの機能のために用いたりします。
* 仕様書
[REFS[
- [7] [CITE@en[RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing]] ([TIME[2014-06-07 01:59:35 +09:00]] 版) <https://tools.ietf.org/html/rfc7230#page-10>
- [16] [CITE@en[RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)]] ([TIME[2014-09-21 17:04:59 +09:00]] 版) <http://tools.ietf.org/html/rfc4918#section-18>
]REFS]
* 分類と用途
[15] [[プロキシ]]は、[[キャッシュ]]、[[変形]]、[[経路制御]]、[[アクセス制御]]・[[防火壁]]、[[ウイルス検査]]、
[[検閲]]、[[検閲]]回避など様々な目的のために利用されています。
[10] [[プロキシ]]は、用途や[[プロトコル]]、配置などによって、様々に分類されています。
[FIG(short list)[
- [[キャッシュ串]]
- [[共有串]]
- [[open proxy]]
- [[変形串]]
- [[順プロキシ]]
- [[逆プロキシ]]
- [[透過串]]
- [[interception proxy]]
- [[MITM proxy]]
]FIG]
[19] 特定の [[Webサイト]]の [[HTML]]
を書き換えたり [[JavaScript]] を注入したり、[[キャッシュ]]機能を強化したりして[[利用者]]側で高度な
[[Webサイト]]のカスタマイズを行うことを目的とした[[串]]もあります。
他の言語や方言に翻訳する[[串]]もあります。しかしこうした内容を書き換える[[串]]は[[利用者エージェント]]にとって
[[MITM]] 攻撃と区別がつかないので、好ましくないのかもしれません。
そのような書き換えがあったかどうか[[利用者エージェント]]側から確実に判定する方法はありません。
[31] 組織内ネットワークの出入口に当たる[[串]]や、年少者向けの[[フィルタリング]]を行う[[串]]など、
[[検閲]]を目的とした[[串]]は[[ドメイン名]]、[[IPアドレス]]、[[URL]]、[[応答]]の内容その他の[[要求]]や[[応答]]の特徴に基づき[[要求]]を遮断したり、
[[応答]]を改変・差し替えたりすることがあります。その場合は [CODE(HTTP)[[[403]]]]
などの[[状態符号]]が使われると思われますが、その保証はありません。また[[利用者エージェント]]側から通常の[[応答]]と確実に区別する方法はありません。
;; [32] [[透過プロキシ]]により、こうした改変が[[利用者]]の気づかないうちに行われている場合もあります。
;;
[9] [[HTTP]] は、一般的な技術用語としての「[[プロキシ]]」よりもかなり狭い意味
([[HTTP]] を[[プロトコル]]として使った[[順プロキシ]]) に限定して
「[[プロキシ]]」を定義しています。
[[interception proxy]] や[[透過串]]は、[[クライアント]]によって選択されたものではありませんから、
[[HTTP]] の定義による[[プロキシ]]ではありません [SRC[>>7 2.3.]]。
[[HTTP]] の[[プロキシ]]については、[[順プロキシ]]を参照。
[1] 組織内ネットワークから外部のネットワークに接続するため、
あるいは [[VPN]] 等特別なネットワークに接続するために[[プロキシ]]を通す必要がある場合も存在します。
実用上、 [[Webブラウザー]]その他の [[Web]] の[[クライアント]]ソフトウェアは、
[[プロキシ]]に対応しなければなりません。
[14] [[串]]は多段化できます。すなわち、[[串]]もまた[[串]]を使うことができます。
[EG[
[13] [[インターネット]]と[[アプリケーションサーバー]]の間に、
[[ネットワーク]]境界を超えると共に[[経路制御]]を行うための[[逆プロキシ]]と、
[[HTTPキャッシュ]]機能を持った[[プロキシ]]の2段階の[[サーバー]]を挟むことがあります。
]EG]
[11] あるいは、上位層の[[プロトコル]]の[[プロキシ]]を使った通信が、それとは別個に、
下位層の[[プロキシ]]を使った通信の上で行われることもあります。
* プロトコル
[48] [[プロキシ]]の実現を目的とした[[プロトコル]]に次のようなものがあります。
[FIG(short list)[
- [[SOCKS]]
- [[PAC]]
- [[WPAD]]
]FIG]
[49] [[プロキシ]]を想定した機能を持った[[プロトコル]]に次のようなものがあります。
[FIG(short list)[
- [[HTTP]]
-- [[HTTP over FTP]]
]FIG]
[22] [[素のHTTP]] では、[[プロキシ]]が[[要求]]を解釈し改めて自身の[[要求]]として[[上流]]に送信する形を採っています。
[[HTTPS]] では、 [[TLS]] の仕様や趣旨からそのような書き換えは望ましくない
(というか [[MITM proxy]] でない限り不可能) なため、[[プロキシ]]は [[TLS]]
の通信を盲目的に中継する[[トンネル]]として動作します。
[20] [[WebSocket]] は、通常の [[HTTP]] と同じ形で[[プロキシ]]が使えます。
[17] [[WebDAV]] に対応する[[串]]は、 [[HTTP/1.1]] に適合しなければ[['''なりません''']]
[SRC[>>16]]。
[21] [[FTP]] の[[プロキシ]]は色々な方法が歴史的に使われてきましたが、
[[Web]] ではもっぱら [[FTP over HTTP]] が使われます。
** 認証
[33] [[串]]は、その機能の一部または全部の利用に[[ログイン]]等の操作が必要なことがあります。
[[プロキシ]]の[[プロトコル]]に[[認証]]機能が組み込まれていることもあります。
[[ログイン]]等の操作を促す手段として [[captive portal]] が用いられる場合もあります。
** エラー処理
[25] [[プロトコル]]によっては、[[起源サーバー]]のエラーと[[プロキシ]]自体のエラーや[[プロキシ]]から[[上流]]への接続に関するエラーを明確に区別できないことがあります。
[EG[
[27] [[素のHTTP]]の[[プロキシ]]機能では、[[プロキシ]]が[[上流]]からの[[エラー応答]]を[[転送]]したのか、
[[プロキシ]]が[[エラー応答]]を[[生成]]したのか[[クライアント]]が確実に区別する方法がありません。
]EG]
** セキュリティー
[28] [[プロキシ]]を通じて使う[[プロトコル]]が [[HTTPS]] のように [[TLS]]
を使って[[セキュリティー]]を確保したものでは無い場合、
[[クライアント]]は[[プロキシ]]を無条件で信頼することになります。
[EG[
[29] 例えば[[素のHTTP]]の[[プロキシ]]機能の場合は、[[プロキシ]]は[[応答]]の内容を自由に覗いて自由に書き換えることができます。
[[プロキシ]]が信頼できないものであるなら、機密情報が漏洩するかもしれませんし、
危険な[[スクリプト]]が埋め込まれるかもしれません。
]EG]
[35] 組織内ネットワークなどで[[プロキシ]]が絶対に信頼できる場合を除いて、
[[プロキシ]]を使って[[平文]]で通信するべきではありません。
[[プロキシ]]が信頼できるはずの場合でも、信頼できない[[プロキシ]]が別に設置される危険性には注意が必要です。
[EG[
[36] 例えば悪意のある者が物理的に[[ネットワーク]]にアクセスできるなら、
[[プロキシ]]として動作する[[計算機]]から [[LANケーブル]]を抜いて、
偽の[[プロキシ]]に差し替えるかもしれません。
]EG]
* HTTP プロキシ
[59] [[HTTP]]の[[プロキシ]]機能には、次の[[プロトコル要素]]が関与します。
[FIG(short list)[
- [[要求対象]]
- [CODE(HTTP)[CONNECT]]
- [[プロキシ認証]]
-- [CODE(HTTP)@en[Proxy-Authenticate:]]
-- [CODE(HTTP)@en[Proxy-Authorization:]]
-- [CODE(HTTP)[407]]
- [CODE(HTTP)@en[Connection:]]
- [CODE(HTTP)@en[Via:]]
- [[HTTPキャッシュ]]
- [CODE(HTTP)@en[X-Forwarded-[VAR[*]]:]]
[HISTORY[
- [CODE(HTTP)@en[Proxy-Connection:]]
]HISTORY]
]FIG]
** 処理
[60] [[HTTPプロキシ]]の[[サーバー]]としての基本動作は、通常の [[HTTPサーバー]]と変わりありません。
詳細は[[HTTPサーバー]]参照。
[63] '''要求検査'''においては、[[プロキシ認証]]を行うことができます。
[[プロキシ]]自体に対する利用権限を検査する[[HTTP認証]]ですが、
具体的な[[認証方式]]や利用権限の決定方法などは実装と設定に依存します。
[62] [[トンネル]]としての動作は、 [CODE[CONNECT]] を参照してください。
[61] [[順プロキシ]]や[[逆プロキシ]]としての挙動は、
[VAR[要求]]の'''処理の選択'''を次のように行うものです。
[FIG(steps)[
= [64] [VAR[要求]]の[F[要求対象]]が本プロキシサーバーで扱う対象かどうかを判断します。
[[偽]]の場合、
== [65] 何か適切なエラーの[[応答]]を返します。
= [73]
@@ [[port blocking]]
= [75] それ以外の場合、
== [76] '''プロキシ処理'''を返します。
]FIG]
;; [68] 対象かどうかの検査では、
自分自身が指定された場合や、自身の所属する[[プライベートネットワーク]]
(外部からアクセスできるべきでないもの) への接続要求を弾く必要がありそうです。
[77] '''プロキシ処理'''は、[VAR[要求]]を次のようにするものです。
[FIG(steps)[
= [78] [VAR[要求]]が[[キャッシュ]]で処理できるものなら、
== [79] [[キャッシュ項目]]を返す処理を行い、ここで停止します。
= [66] [VAR[起源]]を、[VAR[要求]]の[F[対象URL]]の[F[起源]]に設定します。
= [67] [VAR[接続]]を、[VAR[起源]]の[[接続を得る]]を実行した結果に設定します。
@@ [VAR[credentials]]
= [83] [VAR[要求]]に接続ヘッダー消去を適用します。
= [89] [VAR[要求]]に'''要求改変処理'''を適用します。
= [69] [VAR[接続]]上に[VAR[要求]]を送信します。
@@ [VAR[credentials]]
= [80] [VAR[応答]]を、[VAR[接続]]から得られた[[応答]]に設定します。
= [87] [VAR[応答]]が[[ネットワークエラー]]か、
[VAR[応答]]の[F[状態][状態符号]]が [CODE[407]] か [CODE[511]] なら、
== [88] 適切な [CODE[5xx]] エラーの[[応答]] ([CODE[4xx]] 参照。) を送信し、ここで停止します。
= [81] [VAR[応答]]に接続ヘッダー消去を適用します。
= [90] [VAR[応答]]に'''応答改変処理'''を適用します。
= [82] [VAR[応答]]を送信します。
= [85] [[キャッシュ]]を使うなら、
== [86] [VAR[応答]]の[[キャッシュ]]保存操作を実行します。
]FIG]
@@ [[WS]]
[84] [VAR[メッセージ]]の接続ヘッダー消去は、次のようにします。
[FIG(steps)[
= [71] [VAR[メッセージ]]に [CODE(HTTP)@en[Connection:]] [[ヘッダー]]があれば、
== [72] [VAR[メッセージ]]から、 [CODE(HTTP)@en[Connection:]] [[ヘッダー]]で名前が指定された[[ヘッダー]]をすべて削除します。
= [70] [VAR[メッセージ]]から、次の[[ヘッダー]]をすべて削除します。
[FIG(list middle)[
- [[connection-specific header field]]
- [CODE(HTTP)@en[Host:]]
- [CODE(HTTP)@en[Content-Length:]]
- [CODE(HTTP)@en[Transfer-Encoding:]]
- [CODE(HTTP)@en[Trailer:]]
- [CODE(HTTP)@en[TE:]]
- [CODE(HTTP)@en[Keep-Alive:]]
- [CODE(HTTP)@en[Proxy-Connection:]]
- [CODE(HTTP)@en[Upgrade:]]
- [CODE(HTTP)@en[Proxy-Authorization:]]
- [CODE(HTTP)@en[Proxy-Authenticate:]]
- [CODE(HTTP)@en[Connection:]]
]FIG]
]FIG]
;; [96] [CODE(HTTP)@en[Server:]] や [CODE(HTTP)@en[User-Agent:]] は削除しません。
[91] [VAR[要求]]の'''要求改変処理'''や[VAR[応答]]の'''応答改変処理'''は、
サーバーの実装と設定に依存した方法で[VAR[要求]]や[VAR[応答]]を改変できます。
[EG[
[92] [[HTTP]] の仕様上は[VAR[要求]]に [CODE(HTTP)@en[Via:]] [[ヘッダー]]を追加することが求められています。
[VAR[応答]]に [CODE(HTTP)@en[Date:]] が含まれないとき付与することが求められています。
;; [95] これらの規定がどの程度実施されているかは不明です。敢えて [CODE(HTTP)@en[Via:]]
を付加しないことも多そうです。
]EG]
[EG[
[93] [[逆プロキシ]]は[VAR[要求]]に [CODE(HTTP)@en[X-Forwarded-[VAR[*]]:]] [[ヘッダー]]を付与して元のアクセスの情報を残すのが一般的です。
]EG]
[EG[
[94] [[変形プロキシ]]は[VAR[応答]]の[[ヘッダー]]や[[本体]]を目的に応じて改変します。
]EG]
[EG[
[106] [[HTTPS]] を扱う [[MITM proxy]] は更にいくつかの[[ヘッダー]]を削除するかもしれません。
[SEE[ [[MITM proxy]] ]]
]EG]
* クライアントの設定
[4] [[HTTPクライアント]] ([[Webブラウザー]]その他の末端の[[クライアント]]も、
経路の中間にある[[プロキシ]]も。) のほとんどは、
何らかの接続するべき[[プロキシ]]の指定 ([DFN[プロキシ設定]]) の手段を用意しています。
[8] [[プロキシ]]の機能や[[プロキシ設定]]の機能は、
[[クライアント]]ソフトウェアごとに実装されていることもあれば、
動作している[[プラットフォーム]]の側で一部または全部が提供されていることもあります。
[EG[
[12] 例えば [[Windows]] は [[OS]] 全体の[[プロキシ設定]]を保持しています。
]EG]
[SEE[ [[ネットワーク設定]] ]]
[6] [[プロキシ設定]]の方法は、[[ソフトウェア]]ごとに異なりますが、
次のような手段から1つ[[以上]]提供しているのが普通です。
[FIG(list middle)[
- 設定画面
- 設定ファイル
- [[コマンドライン引数]]
- [[環境変数]]
- [CODE[proxy]] [[API]] [SRC[>>54]]
- [[WebDriver]] [[API]] [SRC[>>58]]
]FIG]
[18] [[環境変数]]による指定は、[CODE[http_proxy]] など一式が[[デファクト標準]]となっていて、
多くのソフトウェアで共通で参照されます。
;; [CODE[http_proxy]] 参照。
[24] 指定の方法や提供する機能はソフトウェアごとに異なりますが、
おおよそ次のような形とするのが一般的なようです。
[FIG(list members)[
: [F[プロキシモード]] :
「なし」、「[[PAC]]」、「[[WPAD]]」、「[[プラットフォーム]]」、「手動」のいずれか。
: [F[[[HTTP]] [[プロキシ]]]] : ([F[プロトコル]], [F[利用者名]], [F[合言葉]], [F[ホスト]], [F[ポート]]) または [[null]]
: [F[[[HTTPS]] [[プロキシ]]]] : ([F[プロトコル]], [F[利用者名]], [F[合言葉]], [F[ホスト]], [F[ポート]]) または [[null]]
: [F[[[FTP]] [[プロキシ]]]] : ([F[プロトコル]], [F[利用者名]], [F[合言葉]], [F[ホスト]], [F[ポート]]) または [[null]]
: [F[[[SOCKS]] [[プロキシ]]]] : ([F[プロトコル]], [F[利用者名]], [F[合言葉]], [F[ホスト]], [F[ポート]]) または [[null]]
: [F[[[PAC]] の [[URL]]]] : [[絶対URL]]または [[null]]
: [F[除外[[ホスト]]リスト]] : 0個[[以上]]の[[ホスト]]の[[リスト]]
]FIG]
;; [26] かつては [[Gopher]] や [[WAIS]] にも対応していることが多かったのですが、
最近は見かけません。ソフトウェアの種類によっては、 [[POP]]、[[IMAP]]、[[SMTP]]、
[[IRC]] などの指定もできるかもしれません。
;; [30] [[Webブラウザー]]以外の[[クライアント]]は [[PAC]] や [[WPAD]]
に対応していない場合も少なくありません。
;; [23] [[HTTP接続の処理]]や[[ネットワーク設定]]も参照。
[REFS[
- [54] [CITE[chrome.proxy - Google Chrome]] ([TIME[2016-06-17 11:12:10 +09:00]])
<https://developer.chrome.com/extensions/proxy>
]REFS]
** WebDriver
[97] [[ChromeDriver]] は [CODE[httpProxy]] に[CODE[[VAR[ホスト]]:[VAR[ポート]]]]を指定できます。
[[GeckoDriver]] は [CODE[httpProxy]] に[VAR[ホスト]]、
[CODE[httpProxyPort]] に[VAR[ポート]]を指定できます。(両方指定しないとエラーが帰ってきます。)
[[WebDriver]] [[仕様書]]は [[GeckoDriver]] の挙動の他に、 [CODE[httpProxy]] に [[URL]]、
[CODE[httpProxyPort]] 無指定、という指定方法ができると書いてありますが、
[[GeckoDriver]] はエラーを返します。 [TIME[2017-03-09T14:18:14.400Z]]
[98] [[GeckoDriver]] は、 [CODE[httpProxyPort]] を[[数値]]でなく[[文字列]]で指定してもエラーとします。[TIME[2017-03-09T15:16:32.300Z]]
[100] [[GeckoDriver]] で [CODE[httpProxy]] に [CODE[[VAR[ホスト]]:[VAR[ポート]]]]
を指定しても直ちにエラーとはなりませんが、[[プロキシ]]に接続できず [[navigate]]
でエラーになります。 [TIME[2017-03-10T05:27:32.700Z]]
[99] [[ChromeDriver]] は [CODE[httpProxyPort]] に対応していません。
[TIME[2017-03-10T05:26:37.800Z]]
[REFS[
- [74] [CITE@en[WebDriver]] ([TIME[2017-03-08 23:24:32 +09:00]] 版) <https://w3c.github.io/webdriver/webdriver-spec.html#dfn-proxy-configuration>
-- [58] 旧 [CITE@en[WebDriver]] ([TIME[2016-07-22 07:24:31 +09:00]]) <https://w3c.github.io/webdriver/webdriver-spec.html#dfn-set-the-proxy>
]REFS]
* 名前
[104] [[プロキシの名前]]として、通常の[[ホスト]] ([[ドメイン名]]や[[IPアドレス]])
の他に、真の[[ホスト]]を隠匿した識別子が使われる場合があります。
これは、[[プロキシ]]によって内部[[ネットワーク]]内の構造を外部に晒してしまうことを防ぐのが目的です。
;; 詳しくは[[プロキシの名前]]を参照。
* メモ
[2] もともと[CODE[串]]というのは「プロクシ」の後半の音から取った[[俗語]]だけど、語呂がいいのですっかり定着してしまった。
[3] 派生語: [[串刺し]], [[串規制]]
[5]
[CITE[国内open proxyの現状]] <http://spam.h1r.org/jpproxy/index.html>
([[名無しさん]] [WEAK[2006-05-27 02:42:05 +00:00]])
[34] [CITE@en[draft-rpeon-httpbis-exproxy-00 - Explicit Proxies for HTTP/2.0]]
([TIME[2015-04-24 04:17:39 +09:00]] 版)
<http://tools.ietf.org/html/draft-rpeon-httpbis-exproxy-00>
[37] [CITE[Pretty-Bad-Proxy: An Overlooked Adversary in Browsers’ HTTPS Deployments - Microsoft Research]]
([TIME[2015-09-13 00:16:48 +09:00]] 版)
<http://research.microsoft.com/apps/pubs/default.aspx?id=79323>
[38] [CITE@en[713023 – Websockets: don't prefer SOCKS to HTTP proxy until bug 449251 is fixed]]
([TIME[2015-09-14 23:36:09 +09:00]] 版)
<https://bugzilla.mozilla.org/show_bug.cgi?id=713023>
[39] [CITE@en[''''''[''''''chrome'''''']'''''' Index of /trunk/src/net/proxy]]
([TIME[2015-09-22 18:15:37 +09:00]] 版)
<http://src.chromium.org/viewvc/chrome/trunk/src/net/proxy/>
[40] [CITE[Secure Web Proxy - The Chromium Projects]]
([TIME[2016-04-23 03:43:10 +09:00]] 版)
<https://www.chromium.org/developers/design-documents/secure-web-proxy>
[41] [CITE[Data Saver - Google Chrome]]
([TIME[2016-04-23 17:44:55 +09:00]] 版)
<https://developer.chrome.com/multidevice/data-compression>
[42] [CITE@en[378637 – Add support for connecting to HTTP proxy over HTTPS]]
([TIME[2016-04-23 18:34:40 +09:00]] 版)
<https://bugzilla.mozilla.org/show_bug.cgi?id=378637>
[43] [CITE@en[Features/HTTPS - Squid Web Proxy Wiki]]
( ([TIME[2016-05-07 01:33:40 +09:00]]))
<http://wiki.squid-cache.org/Features/HTTPS>
[FIG(quote)[
[FIGCAPTION[
[44] [CITE[cURL - How To Use]]
( ([TIME[2016-05-31 06:05:05 +09:00]]))
<https://curl.haxx.se/docs/manpage.html#--proxy10>
]FIGCAPTION]
> --proxy1.0 <proxyhost'''[''':port''']'''>
> Use the specified HTTP 1.0 proxy. If the port number is not specified, it is assumed at port 1080.
> The only difference between this and the HTTP proxy option (-x, --proxy), is that attempts to use CONNECT through the proxy will specify an HTTP 1.0 protocol instead of the default HTTP 1.1.
]FIG]
[FIG(quote)[
[FIGCAPTION[
[45] [CITE[cURL - How To Use]]
( ([TIME[2016-05-31 06:05:05 +09:00]]))
<https://curl.haxx.se/docs/manpage.html#-x>
]FIGCAPTION]
> -x, --proxy <'''['''protocol://''']''''''['''user:password@''']'''proxyhost'''[''':port''']'''>
> Use the specified proxy.
> The proxy string can be specified with a protocol:// prefix to specify alternative proxy protocols. Use socks4://, socks4a://, socks5:// or socks5h:// to request the specific SOCKS version to be used. No protocol specified, http:// and all others will be treated as HTTP proxies. (The protocol support was added in curl 7.21.7)
> If the port number is not specified in the proxy string, it is assumed to be 1080.
> This option overrides existing environment variables that set the proxy to use. If there's an environment variable setting a proxy, you can set proxy to "" to override it.
> All operations that are performed over an HTTP proxy will transparently be converted to HTTP. It means that certain protocol specific operations might not be available. This is not the case if you can tunnel through the proxy, as one with the -p, --proxytunnel option.
> User and password that might be provided in the proxy string are URL decoded by curl. This allows you to pass in special characters such as @ by using %40 or pass in a colon with %3a.
> The proxy host can be specified the exact same way as the proxy environment variables, including the protocol prefix (http://) and the embedded user + password.
]FIG]
[FIG(quote)[
[FIGCAPTION[
[47] [CITE@ja[匿名化ソフト(TOR)で攻撃された場合の生IPアドレス取得方法 | WhiteHackerzBlog ハッカー養成学院 公式ブログ]]
( ([TIME[2016-06-16 11:33:38 +09:00]]))
<http://www.whitehackerz.jp/blog/?p=1809>
]FIGCAPTION]
> Flash Playerは串に非対応
> Javaはブラウザに設定された串を使用できるが、
> 串を使用せずにリクエストを送信することもできる
> SilverlightのHTTPクライアントはブラウザに設定された串を使用するが、
> ソケットクラスを使用すれば串をbypassできる
]FIG]
[50] [CITE@en[Issue 35748 - chromium - Flash Plugin for Linux does NOT honor the --proxy-server command line options - Monorail]]
( ([TIME[2016-06-16 11:35:01 +09:00]]))
<https://bugs.chromium.org/p/chromium/issues/detail?id=35748>
[FIG(quote)[
[FIGCAPTION[
[51] [CITE[evan_tech -- socks5 proxying flash via ssh]]
( ([TIME[2016-06-16 11:36:29 +09:00]]))
<http://evan-tech.livejournal.com/273224.html>
]FIGCAPTION]
> tsocks firefox
]FIG]
[52] [CITE@en[Issue 35748 - chromium - Flash Plugin for Linux does NOT honor the --proxy-server command line options - Monorail]]
( ([TIME[2016-06-16 11:37:53 +09:00]]))
<https://bugs.chromium.org/p/chromium/issues/detail?id=35748>
[53] [CITE@en[Issue 163116 - chromium - Flash and other plugins should be forced through the browser's proxy - Monorail]]
( ([TIME[2016-06-16 19:40:56 +09:00]]))
<https://bugs.chromium.org/p/chromium/issues/detail?id=163116>
[55] [CITE[Network Settings - The Chromium Projects]]
( ([TIME[2016-06-17 21:22:42 +09:00]]))
<https://www.chromium.org/developers/design-documents/network-settings>
[56] [CITE@en[Issue 72692 - chromium - Handle UTF-8 URLs in Proxy Settings API - Monorail]]
( ([TIME[2016-06-18 00:09:01 +09:00]]))
<https://bugs.chromium.org/p/chromium/issues/detail?id=72692>
[57] [CITE@en[chrome/browser/extensions/api/proxy - chromium/src - Git at Google]]
( ([TIME[2016-06-18 00:10:51 +09:00]]))
<https://chromium.googlesource.com/chromium/src/+/master/chrome/browser/extensions/api/proxy>
[101] [CITE@en[Better define proxies]]
([[shs96c]]著, [TIME[2017-06-26 20:03:01 +09:00]])
<https://github.com/w3c/webdriver/commit/a90db4b119de8c77875647e30b611c1c49a4349b>
[102] [CITE@en[426736 - WebSocket connections not using configured system HTTPS Proxy in MacOS - chromium - Monorail]]
([TIME[2017-08-11 16:57:44 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=426736>
[103] [CITE@en-US[Understanding Web Proxy Configuration – IEInternals]]
([TIME[2017-08-26 12:05:46 +09:00]])
<https://blogs.msdn.microsoft.com/ieinternals/2013/10/11/understanding-web-proxy-configuration/>
[105] [CITE@en[684681 - Plaintext websockets does not work via HTTP/2 proxy - chromium - Monorail]]
([TIME[2018-06-20 10:47:01 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=684681>