ホームページ  >  記事  >  バックエンド開発  >  PHP CURL_PHP チュートリアルに基づいたメールアドレス取得の詳細説​​明

PHP CURL_PHP チュートリアルに基づいたメールアドレス取得の詳細説​​明

WBOY
WBOYオリジナル
2016-07-21 15:09:55776ブラウズ

CURL は、旅行に欠かせない万能薬と言えるのはなぜでしょうか。使いやすく、ページグラブや擬似ログイン収集などの一連の機能を実現できるためです。
私が初めて CURL に触れたのは、メールボックス ユーザー リストからの取得を完了するときだったと記憶しています。当時は進歩に追いつくために詳しく勉強せず、ネットで情報を見つけて実装しただけでした。元のコードを整理した後も、この関数は次のようにコピーできます。 /html; charset=GB2312" );

//メールのユーザー名とパスワード $user = 'username' ; $pass = 'password'; //Cookie 情報を保存するファイルを作成します
define ( "COOKIEJAR ", tempnam (ini_get ( "upload_tmp_dir" ), "cookie" ) );

$url = 'http: //reg.163.com/logins.jsp?type=1&url=http://entry.mail.163 .com/coremail/fcg/ntesdoor2?lightweight%3D1%26verifycookie%3D1%26 language%3D-1%26style% 3D-1';
$refer = 'http://mail.163.com';
$fields_post = array ('username' => $user, 'password' => $pass, 'verifycookie' => ; 1, 'style' => 'product' => 'selType' => 'on' );
$fields_string = http_build_post; , '&' );
$headers_login = array ('User-Agent' => 'Mozilla/5.0 ( Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/2008052906 Firefox/3.0', 'リファラー' => 'http://www.163.com' );

//ログイン
$ ch =curl_init ( $url );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt ( $ch, CURLOPT_HEADER, true );
curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 120 );
curl_setopt ( $ch, CUR LOPT_POST, true );
curl_setopt ( $ch, CURLOPT_REFERER, $refer );
curl_setopt ( $ch, CURLOPT_COOKIESESSION, true ) ;
curl_setopt ( $ch, CURLOPT_COOKIEJAR, COOKIEJAR );
curl_setopt ( $ch, CURLOPT_HTTPHEADER , $headers_login );
curl_setopt ( $ch, CURLOPT_POST, count ( $fields ) );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $フィールド文字列 ) ;
$result =curl_exec ( $ch );
curl_close ( $ch );

//Jump
$ url = 'http://entry.mail.163.com/coremail/fcg/ntesdoor2?lightweight=1&verifycookie= 1& language=-1&style=-1&username=loki_wuxi';
$headers = array ('User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/2008052906 Firefox /3.0' );

$ch =curl_init ( $url );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 120 );
curl_setopt ( $ch , CURLOPT_POST , true );
curl_setopt ( $ch , CURLOPT_COOKIEJAR , COOKIEJAR );
$result =curl_exec ( $ch );
curl_close ( $ch );

// sid を取得
preg_match ( '/sid=[ ^"].*/', $result, $location );
$sid = substr ( $location [0], 4, - 1 );

//アドレス帳のアドレス
$url = 'http://g4a30 .mail.163.com/jy3/address/addrlist.jsp?sid=' . $sid . '&gid=all';
$headers = array ('User-エージェント' => 'Mozilla/5.0 (Windows; U ; Windows NT 5.1; en-CN; rv:1.9) Gecko/2008052906 Firefox/3.0' );

$ch =curl_init ( $url );
curl_setopt ( $ ch, CURLOPT_RETURTRANSFER, true );
curl_setopt ( $ch, CURLOPT_HEADER, true );
curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 120 );
curl_setopt ( $ch, CURLOPT_POST, true );
curl_setopt ( $ch, CURLOPT_HTTPHEA DER、$ヘッダー);
curl_setopt ( $ch, CUR LOPT_COOKIEJAR, COOKIEJAR );
$result =curl_exec ( $ch );
curl_close ( $ch );
リンク解除 ( COOKIEJAR );

// コンテンツのクロールを開始します
preg_match_all ( '/]*>(.*?) ]*>(.*?)/i', $result, $infos, PREG_SET_ORDER );
//1:名前 2: メール
print_r ( $infos );
?
PHP ファイルを作成し、上記のコードをコピーして保存します。メール アカウントとパスワードを忘れずに変更してください。初めての CURL 体験ですが、どうですか、悪くありません。
その後、速達の問い合わせについて質問している人が CSDN に投稿しているのを見かけました。彼は、いくつかの大手速達サービスの問い合わせサービスを 1 つのページにまとめたいと考えていました。これは確かに非常に優れた実用的なツールですが、速達の問い合わせには検証が必要です。コードを見て、CURL ツールを思い出しました。その後、私は投稿所有者がこの機能を実装するのを手伝いました。そのアイデアは非常に単純で、まず CURL を使用して検証コードを取得し、同時にそれをユーザー送信ページに表示します。 COOKIE の同期を確実にするために、検証コードの保存が一緒に送信されます。

ソースコードは次のとおりです:
-getEms.html
コードをコピーします コードは次のとおりです:




EMS エクスプレス問い合わせ


fclose(fopen( 'cookie.txt', 'w')); // ファイル cookie.txt は、取得した Cookie を保存するために使用されます
$cookiejar = realpath('cookie.txt');
$fp = fopen("example_homepage.txt" , "w"); // ファイル example_homepage.txt は、取得したページ コンテンツを保存するために使用されます
$ch =curl_init("http://www.ems.com.cn/servlet/ImageCaptchaServlet");
curl_setopt($ ch、CURLOPT_FILE、$fp);
curl_setopt($ch、CURLOPT_COOKIEJAR、$cookiejar);
curl_setopt($ch、CURLOPT_COOKIEJAR、$cookiejar);
curl_setopt($ch、CURLOPT_Hイーダー, 0);
curl_exec($ch ) ;
curl_close($ch);
fclose($fp);

//readfile($cookiejar) //取得した Cookie を表示します
//readfile("example_homepage.jpg "); //取得した Cookie の画像を表示します
?>

宅配便番号: (13 桁のうち最初と最後の 2 桁は文字です)

< ?php echo "";?>






-getems.php

コードをコピーします コードは次のとおりです:
if($_POST){
//次のCookieファイルを使用します前の認証コード
$cookiejar = realpath('cookie.txt');
/ /myEmsbarCode番号と認証コード変数名を取得
$ch =curl_init("http://www.ems.com.cn");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0 );
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiejar);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiejar);
$result =curl_exe c ($ch);
curl_close($ch);
preg_match("/< input type="hidden" name="myEmsbarCode" value="(.*)"/>/isU",$result,$myEmsbarCode );
preg_match("/
$parm = array($codename[1 ]=>$_POST['code'],
mailNum =>$_POST ['mailNum'],
myEmsbarCode=>$myEmsbarCode[1],
reqCode=>'browseBASE'
);

$ ch =curl_init("http://www.ems.com.cn/qcgzOutQueryAction.do");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch 、CURLOPT_COOKIEFILE、$cookiejar);
curl_setopt($ch、CURLOPT_COOKIEJ AR、$cookiejar);
curl_setopt($ch、CURLOPT_POST、1);
curl_setopt($ch、CURLOPT_REFERER、"http://www.ems.com. cn");
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($parm));
$_source =curl_exec($ch);
curl_close($ch);

//完了
var_dump($_source);
exit ;
}
?>


CURL ライブラリのパラメータの詳細な説明については、私が直接含めたものがインターネット上に多数あります。
関数リスト CURL ライブラリには合計 17 の関数があります。
curl_close: CURL セッションを閉じる
curl_copy_handle: a をコピーします。 CURL セッションを処理し、すべてのパラメータを同時にコピーします
curl_errno: 最後のエラー コードを返します
curl_error: 現在のセッションの最後のエラーを説明する文字列を返します
curl_exec: 現在のセッションを実行します
curl_getinfo: 特定の情報を取得します
curl_init : CURL セッションを初期化します
curl_multi_add_handle: マルチ接続セッションにハンドルを追加します
curl_multi_close: マルチハンドル CRUL セッションを閉じます
curl_multi_exec: マルチハンドル CURL セッションを実行します
curl_multi_getcontent: 実行後にハンドルの内容を返します (次の場合) CURLOPT_RETURNTRANSFER が設定されています
curl_multi_info_read: 現在のすべての接続に関する情報を取得します
curl_multi_init: マルチハンドル ハンドル セッションを初期化します
curl_multi_remove_handle: マルチハンドル セッションからハンドルを削除します
curl_multi_select: バインドされているすべてのソケットを取得します
curl_setopt: CURL トランスポート オプションを設定します
curl_version : CURL のバージョンを取得します。
共通の設定オプション ブール型オプション
CURLOPT_AUTOREFERER: 返される場合 情報ヘッダーにリダイレクト情報が含まれている場合、転送接続が自動的に設定されます
CURLOPT_BINARYTRANSFER: CURLOPT_RETURNTRANSFER が使用される場合に TRUE を返します
CURLOPT_COOKIESESSION: 以前に設定されたものを無視して、新しい Cookie セッションをマークします。クッキーセッション
CURLOPT_CRLF: Unix システム改行を Dos 改行に変換します
CURLOPT_DNS_ USE_GLOBAL_CACHE : グローバル DNS キャッシュを使用します
CURLOPT_FAILONERROR: 返されたエラーを無視します
CURLOPT_FILETIME: 要求されたドキュメントの変更日を取得します。これは、curl_getinfo() で取得できます。
CURLOPT_FOLLOWLOCATION: サーバーから返されたすべてのリダイレクト情報に従います
CURLOPT_FORBID_REUSE: プロセスが終了したらセッションを強制的に閉じ、再利用のためにキャッシュしなくなります
CURLOPT_FRESH_CONNECT: キャッシュされたセッションを再利用する代わりに新しいセッションを強制的に確立します
CURLOPT_HEADER : 返された後、出力には応答ヘッダー情報が含まれます
CURLOPT_HTTPGET: HTTP リクエスト メソッドを GET に設定します
CURLOPT_HTTPPROXYTUNNEL: HTTP プロキシ経由で接続を確立します
CURLOPT_NOBODY: 返された出力にはドキュメント情報が含まれません
CURLOPT_NOPROGRESS: プロセス レベルの送信を無効にします。 PHP は自動的に true に設定されます
CURLOPT_NOSIGNAL: PHP に送信されるすべての情報を無視します
CURLOPT_POST: データを送信する POST メソッドを設定します。POST 形式は application/x-www-form-urlencoded です
CURLOPT_PUTTRUE: ファイルをアップロードする PUT メソッドを設定しますCURLOPT_INFILE と CURLOPT_INFILESIZE を同時に設定します
CURLOPT_RETURNTRANSFER:curl_exec() の呼び出し後に直接出力するのではなく、文字列を返します
CURLOPT_SSL_VERIFYPEER:SSL 検証がオンになります
CURLOPT_UNRESTRICTED_AUTH:リンクの後に常にユーザー名とパスワードを追加し、CURLOPT_FOL を設定しますローロケーション
CURLOPT_UPLOAD : 整数値オプションをアップロードする準備をします
CURLOPT_BUFFERSIZE: キャッシュ サイズ
CURLOPT_CONN ECTTIMEOUT: 接続時間の設定、デフォルトの 0 は無制限です
CURLOPT_DNS_CACHE_TIMEOUT: DNS 情報をメモリに保存する時間、デフォルトは 2 分です
CURLOPT_INFILESIZE: アップロードされたファイルのサイズ
CURLOPT_LOW_SPEED_LIMIT: 最小送信速度制限および中止
CURLOPT_LOW_SPEED_TIME: 送信時間制限
CURLOPT_MAXCONNECTS: 最大耐久性 接続数
CURLOPT_MAXREDIRS: 最大リダイレクト数
CURLOPT_PORT: 接続ポート
CURLOPT_PROXYAUTH: *****検証メソッド
CURLOPT_PROXYPORT: ******ポート
CURLOPT_PROXYTYPE: **** *Type
CURLOPT_TIMEOUT: CURL 関数の最大実行時間 文字列オプション
CURLOPT_COOKIE: HTTP ヘッダーの set-cookie 内の Cookie 情報
CURLOPT_COOKIEFILE: を含むファイルCookie 情報。Cookie ファイルの形式は Netscape 形式、または HTTP ヘッダーの形式です。
CURLOPT_COOKIEJAR: 接続完了後に Cookie 情報を保存します。 ファイル
CURLOPT_CUSTOMREQUEST: カスタム要求ヘッダー、相対アドレスを使用します。
CURLOPT_ENCODING: の値。 HTTP リクエスト ヘッダーの Accept-Encoding
CURLOPT_POSTFIELDS: POST 形式で送信されたデータ コンテンツ
CURLOPT_PROXY: プロキシ チャネル
CURLOPT_PROXYUSERPWD: プロキシ認証のユーザー名とパスワード
CURLOPT_RANGE :return データの範囲 (バイト単位)
CURLOPT_REFERER: フォワード リンク
CURLOP T_URL: URL接続するアドレス (curl_init() で設定可能)
CURLOPT_USERAGENT: HTTP ヘッダーの User-Agent の値
CURLOPT_USERPWD: 接続に使用される検証情報 配列オプション
CURLOPT_HTTP200ALIASES: 200 個の応答コードの配列、での応答配列は正しい応答と見なされますか?
CURLOPT_HTTPHEADER: カスタムリクエストヘッダー情報はストリームハンドルのオプションのみです:
CURLOPT_FILE: 書き込まれる夜のハンドルを転送します。デフォルトは標準出力です
CURLOPT_INFILE: 読み取られるファイルハンドルを転送します
CURLOPT_STDERR: 標準エラー出力の代替オプションとして
CURLOPT_WRITEHEADER: ファイルに書き込まれるヘッダー情報の転送コールバック関数オプション
CURLOPT_HEADERFUNCTION: 2 つのパラメーターを持つコールバック関数、最初のパラメーターはセッション ハンドル、2 番目のパラメーターはHTTP 応答ヘッダー情報の文字列。このコールバック関数を使用すると、応答ヘッダー情報が単独で処理されます。応答ヘッダー情報は 1 行ずつ返されます。戻り値を文字列の長さに設定します。
CURLOPT_READFUNCTION: 2 つのパラメーターを持つコールバック関数。最初のパラメーターはセッション ハンドルで、2 番目のパラメーターは HTTP 応答ヘッダー情報の文字列です。この関数を使用すると、返されたデータが自分で処理されます。戻り値はデータサイズです。
CURLOPT_WRITEFUNCTION: 2 つのパラメーターを持つコールバック関数。最初のパラメーターはセッション ハンドルで、2 番目のパラメーターは HTTP 応答ヘッダー情報の文字列です。このコールバック関数を使用すると、応答ヘッダー情報が単独で処理されます。応答ヘッダー情報は文字列全体です。戻り値を文字列の長さに設定します。
他の CURL の例 (インターネットから抜粋)
コードをコピーします コードは次のとおりです:

/*
*URL が有効なリンクかどうかを判断します
*/
function isRealUrl($url ){
$ch =curl_init();
$options = array(
CURLOPT_URL => setopt_array($ch, $options) ;
curl_exec($ch);
if(!curl_errno($ch)){
return 200 ==curl_getinfo($ch,CURLINFO_HTTP_CODE)?true:false;
}
curl_close($ch);
}

$ url = 'http://testpic1.tomoimg.cn/240x180/394/855/517932781/200901 /12312215602409.jpg';
if(isRealUrl($url)){echo 'yes';}else{echo 'no' ;}

/非同期リクエストの例:
$userid = 517932781;
$imageid = 1520;
$albumid = 2637;
$tags = 'aa';
extract($_POST);
$url = 'http://'.$_SERVER['HTTP_HOST'].'/ajax/image.php';
$fields = array(
'userid' => $userid,
'imageid' => $imageid,
'albumid ' => $albumid,
'tags' => $tags,
'optype' = > 'del'
);
$ch =curl_init() ;
curl_setopt($ch, CURLOPT_URL,$url) ;
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields) ;
$result =curl_exec($ch) ;
curl_close($ch) ;

//ファイルをアップロードします
$ch =curl_init();
curl_setopt($ch,CURLOPT_URL,'http://lh.tom.com /deal/import.php');
$fields = array(
'tname' => 'Tao Te Ching',
'country' => 1,
'author' => '老子',
'tags' => 'Tao Te Ching',
'desc' => '道は道である可能性がありますが、それは道ではありません。有名です、とても有名です。名も無き世界の始まり。万物の母として知られています。したがって、私はその驚異を観察する気は常にありません。私はいつも彼を見守りたいという欲求を持っています。両者は起源は同じですが名前が異なり、両方とも玄と呼ばれます。神秘的で神秘的、すべての謎への扉。 ',
'ボリューム' => 2,
'カバー' => '@'.realpath('/data/lianhuanhua/deal/1.jpg')
);
curl_setopt($ch, CURLOPT_POST, true) ;
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields) ;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
$result =curl_exec($ch);
curl_close($ch);

//複数のファイルのアップロード
$ ch =curl_init();
curl_setopt($ch,CURLOPT_URL,'http://lh.tom.com/deal/addpic.php');
$j = 0;
$fields = array(
'vid' = > 103,
'upfile['.$j++.']' => '@'.realpath('/data/lianhuanhua/deal/1.jpg'),
'upfile['.$j++.'] ' => '@'.realpath('/data/lianhuanhua/deal/2.jpg')
);
curl_setopt($ch, CURLOPT_POST, true) ;
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields) ;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
$result =curl_exec($ch);
curl_close($ch);


PHP CURL ライブラリをマスターすると、やりたいことがたくさんできるようになります。笑 つい最近、Kaixin.com で X ワールドをプレイしましたが、戦闘は非常に面倒でした。非常に使いやすい戦闘アシスタントを直接書きました。このコードはオープンソース化されません:) オープンソースと同じです。原理をマスターすれば実装可能です。
ウェブサイトカウンター



http://www.bkjia.com/PHPjc/327185.html

www.bkjia.com

tru​​e

技術記事 CURL は、旅行に欠かせない万能薬と言えるのはなぜでしょうか。使いやすく、ページグラブや擬似ログイン収集などの一連の機能を実現できるためです。 初めて CURL に触れたときのことを思い出します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。