• ベストアンサー

WinINet関数について質問です。

WinINet関数を使いVCプログラムしています。 HTMLをダウンロードしてきて、情報を解析しているのですが。 InternetOpen InternetOpenUrl ↓ InternetReadFile 手順で、HTMLの所得はできるのですが、 ユーザー認証がいるサイトの情報を取る方法がわかりません。 (例えば:mixi,facebookなど) WinINet関数を使用してサイトにログインしてから、 指定のURLのHTMLを取得する様な感じだと思っているのですが、やり方がわかりません。 参考になる、サイト等知っている方がいましたら、教えて頂けると嬉しいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

mixiだとBASIC認証じゃなくてフォームへ……ですね。 http://www.hiramine.com/programming/windows/httprequest.html とか参考に……なりますかねぇ。 APIの使用順などは参考になると思いますが……。 フォームでログインするタイプだと、おそらくHTTPリクエストはPOSTになります。 # 実際のところはそのページのソースを確認するべきですが。 HTTPリクエストヘッダに Content-Type: application/x-www-form-urlencoded を追加して、HTTPリクエスト ボディでユーザー名やパスワードなどを送信することになります。 # どこにPOSTするのか…とか、HTTPリクエスト ボディに入れる必要のあるデータなどはページによる…ということに。 また、セッション管理などでCookieを使っていたりする場合は、その後の通信でもCookieの送受信なども必要になるでしょう。 VMWare上のUSVNへのログインだと…下記のような感じに…… POST /usvn/login/ HTTP/1.1 Host: 192.168.61.134 User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20100101 Firefox/15.0.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ja,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive Referer: http://192.168.61.134/usvn/login/ Cookie: PHPSESSID=umhpt5qvd5dge8h026jkl5tpn7 Content-Type: application/x-www-form-urlencoded Content-Length: 83 login=admin&password=123456789&submit=%E3%82%B5%E3%83%96%E3%83%9F%E3%83%83%E3%83%88

kumi0708
質問者

お礼

参考のサイト本当にありがとうございます。 サイトのサンプルを流用して、少し改造を加え、 欲しい情報の取得ができました。 本当に助かりました。ありがとう御座いました。

その他の回答 (1)

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

「InternetOpenUrl 認証」辺りで検索すると見つかるんじゃないでしょうか。 InternetOpenUrl()の第3引数と第4引数で追加のヘッダ(HTTPリクエストヘッダ)が指定できます。 # HttpSendRequest()でもいいのでしょうが…… http://www.studyinghttp.net/auth とか……。 >ユーザー認証がいるサイトの情報を取る方法がわかりません。 >(例えば:mixi,facebookなど) SSLだとダメですが…WireSharkなどで実際のパケットを覗く…というのもアリかと思います。

kumi0708
質問者

お礼

Wr5様 アドバイスありがとうございます。 アドバイスに書いてあってURlの内容 HTTPアクセス認証について、サイトの方読みました。 ですが、私の力量不足なのか、問題の解決にいたっていまっせん。 HttpSendRequestなどを使用した、mixi等に対して認証(ログイン?)をする イメージでいいのでしょうか? あつかましいと思いますが、簡単なサンプルかなにかを教えていただけると嬉しいです。