0

https://agent.lionair.co.id/lionairagentsportal/CaptchaGenerator.aspxから画像キャプチャを取得したい。

わかりません。

しかし、https://agent.lionair.co.id/lionairagentsportal/default.aspx という URL で新しいタブを開くと、https://agent.lionair.co.id/lionairagentsportal/CaptchaGenerator.aspxを開くと、画像は次のようになります。示す。

https://agent.lionair.co.id/lionairagentsportal/CaptchaGenerator.aspxに興味があります。https://agent.lionair.co.id/lionairagentsportal/default.aspxをまだ開いているのに開けないのはなぜですか。

このコードを試しましたが、残念ながら失敗しました。画像はまだ表示されません。

<?php

//The curl_init() will initialize a new session and return a CURL handle.
//curl_exec($ch) This function should be called after you initialize a CURL session and     all the options for the session are set. Its purpose is simply to execute the predefined CURL session (given by the ch). 
//curl_setopt( $ch, option, value) Set an option for a CURL session identified by the ch parameter. option specifies which option to set, and value specifies the value for the option given.

$url = "https://agent.lionair.co.id/LionAirAgentsPortal/default.aspx"; // From URL to get webpage contents.
$cookie_file_path = "/opt/lampp/htdocs/curl-examples/cookieFolder/cook";

$ch = curl_init();  // Initialize a CURL session.
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);  // Return Page contents.
curl_setopt($ch, CURLOPT_URL, $url);  // Pass URL as parameter.
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); // Tempat menaruh cookies.
$html = curl_exec($ch);  // grab URL and pass it to the variable.

$ch = curl_init();  // Initialize a CURL session.
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);  // Return Page contents.
curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE);  // Karena keluarannya gambar, maka di-    set binary = true.
curl_setopt($ch, CURLOPT_URL, "https://agent.lionair.co.id/LionAirAgentsPortal/CaptchaGenerator.aspx");  // Pass URL as parameter.
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); // Tempat cookies di mana cookies mana yang mau digunakan.

$gambar = curl_exec($ch);  // grab URL and pass it to the variable.
curl_close($ch);  // close curl resource, and free up system resources.

?>
<html>
<head>

</head>
<body>
    <form action="https://agent.lionair.co.id/LionAirAgentsPortal/default.aspx" name="form1" method="post">
        <label for="txtLoginName">Username: </label>
        <input type="text" name="txtLoginName" />
        <br/>
        <label for="txtPassword">Password: </label>
        <input type="password" name="txtPassword" />
        <br/>
        <img src="data:image/jpeg;base64,<?php echo $gambar; ?>" />
        <br/>
        <label for="CodeNumberTextBox">Captcha: </label>
        <input type="text" name="CodeNumberTextBox" />
        <br/>
        <input type="submit" value="otentikasi" />
    </form>
</body>

4

4 に答える 4

2

CAPTCHA ジェネレーターはセッションで CAPTCHA を定義していますが、これは実際のページによってのみ定義されます。これは、CAPTCHA を生成する方法を 1 つだけ提供するための非常に標準的な方法です。

画像ジェネレーターが CAPTCHA の生成を担当している場合、ページが送信される前に表示されるものが必ずしも真の CAPTCHA 値ではないという競合状態が発生します。さらに、Firebug や Chrome の開発者ツールなどの一部の開発者ツールは、画像を内部的にロードする場合があり、ユーザーの知らないうちに CAPTCHA が更新されます。画像ジェネレーターが CAPTCHA 値も作成すると、さらに混乱が生じるだけです。

于 2012-09-30T02:19:40.197 に答える
1

default.aspx ページを含むページで透明な iframe を使用できます。そうすれば、サーバーは default.aspx ページをサーバーする必要があると判断し、クライアントにセッション Cookie を設定します。後で CaptchaGenerator.aspx ページにアクセスしようとすると、クライアントの Cookie ストレージにセッション Cookie が存在するため、応答が返されます。

<iframe src ="https://agent.lionair.co.id/LionAirAgentsPortal/default.aspx" style="widht:0px;height:0px"/>

Java Script を使用してクライアント側で実行できるイメージを含める前に、iframe がロードされ、Cookie の作成プロセスが完了するのを待ちたい場合があります。

私が助けてくれることを願っています。

于 2012-09-30T05:58:19.257 に答える
1

簡単です..次のコードを追加します。

$ImageCaptcha=base64_encode($ガンバー);

「$gambar = curl_exec($ch);」の後

次に、コードを変更します: echo $gambar;

echo $ImageCaptcha;

于 2014-08-08T07:44:50.623 に答える
0

変化する: curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);

これで: $cookie="ASP.NET_SessionId="."$cookieValue"; で変更($ch, CURLOPT_COOKIE,$cookie);

それは私にとってはうまくいきますが、$ urlの前にcookievalueを取得する努力が必要です.

于 2012-12-03T19:01:07.737 に答える