Proxyを介したネットワーク通信のやり方がやっとわかりました

アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前
住所: 東京

Proxyを介したネットワーク通信のやり方がやっとわかりました

投稿記事 by MoNoQLoREATOR » 12年前

どうも。Winsockを使って自由自在にネットワーク通信できる日を渇望しておりますMoNoQLoREATORです。
Proxyサーバーを介するネットワーク通信の方法がわからないと、学校でデバッグを行うことができません。何もできないのです。これは困りました。
そして今日、「まてよ?じゃあ私の愛用ブラウザCoolNovoたんはどうやってネットワーク通信してるんだ?いっそのことCoolNovoたんに教えてもらえばいいんじゃね?」という発想に、やっとのことで至ったのでありました。
というわけでさっそくWiresharkをインストール。パケット通信ログをしばらく眺めると…( ´,_ゝ`)クックック・・・( ´∀`)フハハハハ・・・(  ゚∀゚)ハァーハッハッハッハ!!

謎は…全て解けた!!

まず、方針としては『Proxyサーバーを介する』というよりも、『Proxyサーバーと通信をする』という方向で考えなければいけなかったのです。

というわけで、SOCKADDR_IN構造体の値を設定する際にProxyサーバーに接続するものと思って設定する必要があります。

CODE:

SOCKADDR_IN hostinfo;
hostinfo.sin_family = AF_INET;
hostinfo.sin_port = htons(short(/*Proxyサーバーのポート番号*/) );
ULONG & ref = hostinfo.sin_addr.S_un.S_addr;
ref = inet_addr(/*ProxyサーバーのIPアドレス*/);
あとは、GET等のリクエストを送信する際にhttpから始まるフルパスを指定することと、ユーザー認証が必要な場合はProxy-Authorizationリクエストヘッダを忘れないことです。

CODE:

char buff[1024];
sprintf(buff, "%s\r\n%s\r\n%s\r\n\r\n",
    "GET /*WEBページのフルパス*/ HTTP/1.1",
    "Host: /*WEBページのフルパスのドメイン名の部分*/",
    "Proxy-Authorization: Basic /*ユーザーID:パスワード をbase64エンコードした文字列*/");
send(socket, buff, strlen(buff), 0);
今回のユーザー認証は基本アクセス認証であると決め打ちしていますが、認証の種類に応じて適切なパラメーターを指定してください。
base64エンコードについてはググりましょう。

…と、Proxyサーバーを介する環境であることが事前にわかっている場合にどうすればよいかということはわかったのですが、そもそもその環境がProxyサーバーを介さなければならない環境なのかどうかということはどうやって知れば良いのでしょうか。
インターネットオプションのLANの設定でProxyサーバーを介するように設定しているわけですから、その情報の取得方法が解かればProxyサーバーのIPアドレスやポート番号も調べることができそうです。
これが今後の課題ですね。
最後に編集したユーザー MoNoQLoREATOR on 2013年7月10日(水) 10:21 [ 編集 1 回目 ]

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前

Re: Ploxyを介したネットワーク通信のやり方がやっとわかりました

投稿記事 by h2so5 » 12年前

PloxyじゃなくてProxyですよ

naohiro19
記事: 256
登録日時: 14年前

Re: Ploxyを介したネットワーク通信のやり方がやっとわかりました

投稿記事 by naohiro19 » 12年前

「Ploxy」はアメリカ人・イギリス人に笑われますよ