1

ColdFusion で関数を作成して EA Sports Web App にログインできるようにして、プロファイル データを取得してサイトに表示できるようにしようとしています。

ログイン ページのソース コードを見ると、最初のステップは単純なログイン フォームのように見えます。

<form method="post" id="login_form" action="https://www.ea.com/uk/football/services/authenticate/login" class="login_form" enctype="application/x-www-form-urlencoded">
    <input type="hidden" name="redirectUrl" value="http://www.ea.com/uk/football/fifa-ultimate-team" />
    <input type="hidden" name="failureUrl" value="http://www.ea.com/uk/football/login?failed=true&amp;redirectUrl=http%3A%2F%2Fwww.ea.com%2Fuk%2Ffootball%2Ffifa-ultimate-team" />
    <input type="hidden" name="captchaFailureUrl" value="http://www.ea.com/uk/football/login?failed=true&amp;redirectUrl=http%3A%2F%2Fwww.ea.com%2Fuk%2Ffootball%2Ffifa-ultimate-team" />
    <input id="email" name="email" class="text" type="text" tabindex="1" />
    <input id="password" name="password" class="text" type="password" tabindex="2" />
    <input type="checkbox" id="stay-signed" name="stay-signed" value="ON" checked="checked" tabindex="3" />
</form>

CFHTTP リクエストを使用して、以下を送信しています。

<cfhttp url="https://www.ea.com/uk/football/services/authenticate/login" method="POST" result="myResult">
    <cfhttpparam type="header" name="Content-Type" value="application/x-www-form-urlencoded" />
    <cfhttpparam type="formField" name="email" value="#Variables.user#" />
    <cfhttpparam type="formField" name="password" value="#Variables.password#" />
</cfhttp>

返されたものをダンプすると、fileContent には次のものが含まれています。 <authenticate><success>0</success></authenticate>これは、ログインが成功していないことを意味すると想定しています。

ここではあまり遊んでいないことはわかっていますが、ログインを認証するためにこれ以上多くのことを行う必要はないようです。誰かが私が間違っているかもしれない場所を指摘できますか?

4

2 に答える 2

2

これで問題が解決するかどうかはわかりませんが、リモートでフォームを送信する際に考慮すべき点がいくつかあります。

まず、フォームの背後にあるロジックがわからないため、ハンドラーが何かのためにフォームを必要とする場合に備えて、フォーム内のすべてを送信する必要があります。送信していないフォーム フィールドが必要な場合は、エラーが発生し、ログインできません。

第二に、あなたの行動は技術的には考慮できますが、あなたの使用は完全に正当なものであり、ボットまたはハッキングです. 対象の Web サイトは、ハンドラーがフォームによって実際にアクセスされていることを確認しようとしている可能性があります。彼らは HTTP_REFERER を見ている可能性があります。あるいは、HUMAN が 0.0001 秒以内にフォームを送信できなかったため、セッションの継続時間を確認するなど、より凝ったことを行っている可能性もあります。このような場合、セキュリティ ロジックの欠陥を発見しない限り、まったくログインできない可能性があります。

第 3 に、サイトを保護する一部のロジックは、クライアントを調べて、実際のブラウザーであることを確認します。userAgent 属性のデフォルト値は「COLDFUSION」です。ターゲットがもっと長いものを期待している場合、または有効なブラウザ名が含まれている場合、スクリプトはあなたがボットであると想定し、リクエストを拒否します。ただし、これに対する解決策は簡単です。userAgent 属性に適切なブラウザ名を入力するだけです。cgiスコープをダンプすることで取得できます。これに関する問題は、5 年後に古いブラウザーを使用しようとしないように、何らかの方法でそれを維持する必要があることです。IE6 はもうサポートしていません...」

<cfhttp userAgent = "Mozilla/4.0 (compatible; MSIE 7.0; {...}" ...>
于 2013-01-23T14:38:42.893 に答える
0

ログインするすべてのWebサイトは、Cookieを使用してこれを実現する必要があります。これは、Cookieを使用してログインを維持し、セッションを維持する方法であるためです。その後、そのCookieは、ログインしていることを認証するための後続の各ページリクエストでサーバーに送信されます。したがって、cfhttpリクエストでこれをエミュレートする必要があります。この記事を参照してください http://www.bennadel.com/blog/725-Maintaining-Sessions-Across-Multiple-ColdFusion-CFHttp-Requests.htm

于 2013-01-23T14:18:15.467 に答える