5

C と libcurl を使用して、ログイン ページの背後にある html にアクセスする作業を手伝ってもらえないかと思っていました。

具体例:

アクセスしようとしている Web サイトはhttps://onlineservices.ubs.com/olsauth/ex/pbl/ubso/dlです。

このようなことは可能ですか?

問題は、それぞれが別々のログインを持っているクライアントがたくさんあることです。毎日、それぞれのアカウントからデータを取得する必要があります。これを行うために C で何かを記述して、関連するすべてのデータをファイルに保存できれば、実に巧妙です。(HTMLから解析できるアカウントとポジションの値のように)

皆さんはどう思いますか?これは可能ですか?いくつかの例などを使用して、正しい方向に向けてください...?

4

1 に答える 1

7

ログインページをざっと見ただけで、ユーザー名とパスワードの組み合わせを認証ページに投稿し、ログインセッションを表すために Cookie を使用すると仮定することで、libcurl を使用してこれを行うことができます。最初のステップは、次のオプションが設定されていることを確認することです。

  • CURLOPT_FOLLOWLOCATION - サーバーは認証後にリダイレクトすることがあります。これは非常に一般的です。
  • CURLOPT_POST - libcurl に post モードに切り替えるように指示します。
  • CURLOPT_POSTFIELDS - これは libcurl に投稿フィールドに設定する値を伝えます。このオプションを " userId=<insert username>&password=<insert password>" に設定します。その値は、そのページのソース コードから派生します。
  • CURLOPT_USERAGENT - シンプルなユーザー エージェントを設定して、Web サーバーがそれを破棄しないようにします (いくつかの厳密なものはこれを行います)。

次に、投稿が完了すると、libcurl インスタンスには、サイトがログイン ユーザーを識別するために使用するある種の認証 Cookie が含まれている必要があります。Curl は、特定のインスタンス内で Cookie を追跡する必要があります。Cookie の動作を微調整したい場合、Curl には多くのオプションがあります。

「ログイン」したら、そのアカウントでの各リクエストに同じ libcurl インスタンスが使用されることを確認してください。そうしないと、ログアウトしたと見なされます。

結果のページ go の解析に関しては、c 用の HTML パーサーがたくさんあります - ただgoogleです。私が言う唯一のことは、HTML パーサーを自分で作成しようとしないことです。多くのサイトが適切な (または動作する) HTML を生成しないため、これは非常に厄介です。

于 2010-08-23T17:40:21.580 に答える