ホームページ >バックエンド開発 >PHPチュートリアル >[シェア] 新浪微博で自動ログインをシミュレートする方法とその対処方法

[シェア] 新浪微博で自動ログインをシミュレートする方法とその対処方法

WBOY
WBOYオリジナル
2016-06-13 13:01:00929ブラウズ

[分享]模拟新浪微博自动登陆
博客原文地址: http://blog.csdn.net/lgg201/article/details/8050606

<br>
<?php<br>
/**<br>
* 機能: 新浪微博ログインをシミュレート<br>
* 目的: Sina アプリを自動的に制御して特定のデータを更新するなど、後続の操作のためのユーザー ログインをシミュレートします<br>
* 注: <br>
※1.nodejs<br>のインストールが必要です
* 2. Sina の暗号化された js ファイルをダウンロードする必要がある場合は、Sina ログイン ページにアクセスしてネットワークを確認し、最新バージョンを自分でダウンロードするように要求してください (私は http://js.t.sinajs.cn/t35/ を使用しました) miniblog/static/js/sso .js?version=e482ef2bbdaa8bc2)<br>
* 3. Sina 暗号化された js ファイルを変更して、nodejs が実行できるようにします <br>
* 1) ファイルの前に次の内容を追加します <br>
var window = {<br>
場所: {<br>
ハッシュ: ''、<br>
ホスト: 'weibo.com'、<br>
ホスト名 : 'weibo.com'、<br>
href: 'http://weibo.com/'、<br>
パス名: '/'、<br>
ポート: ''、<br>
プロトコル: 'http:'、<br>
検索: ''<br>
}、<br>
ナビゲーター: {<br>
appCodeName : 'Mozilla'、<br>
アプリ名: 'Netscape'、<br>
appVersion : '5.0 (Macintosh)'、<br>
ビルドID : '20120713134347'、<br>
cookieEnabled: true、<br>
doNotTrack : '未指定'、<br>
言語: 'en-US'<br>
}<br>
};<br>
var location = window.location;<br>
var navigator = window.navigator;<br>
※2) ファイルの最後に以下の内容を追加<br>
var argv = process.argv.splice(2);<br>
<br>
var pubkey = argv[0],<br>
サーバー時間 = argv[1],<br>
nonce = argv[2],<br>
パスワード = argv[3];<br>
<br>
var RSAKey = 新しい sinaSSOEncoder.RSAKey();<br>
RSAKey.setPublic(公開鍵, '10001');<br>
パスワード = RSAKey.encrypt([servertime, nonce].join("t") + "n" + パスワード);
console.log(パスワード);<br>
process.exit();<br>
* 4. encode_password 関数で、nodejs プログラムのパスと変更後の Sina js ファイルのパスを変更します<br>
* 5. ユーザー名とパスワードを変更 <br>
* 著者: selfimpr<br>
* ブログ: http://blog.csdn.net/lgg201<br>
* メール: lgg860911@yahoo.com.cn<br>
​*/<br>
<br>
定義('REQUEST_METHOD_GET', 'GET');<br>
定義('REQUEST_METHOD_POST', 'POST');<br>
定義('REQUEST_METHOD_HEAD', 'HEAD');<br>
<br>
定義('COOKIE_FILE', '/tmp/sina.login.cookie');<br>
<br>
function curl_switch_method($curl, $method) {<br>
	スイッチ ( $method) {<br>
		ケース REQUEST_METHOD_POST:<br>
			curl_setopt($curl, CURLOPT_POST, TRUE);<br>
			休憩;<br>
		ケース REQUEST_METHOD_HEAD:<br>
			curl_setopt($curl, CURLOPT_NOBODY, TRUE);<br>
			休憩;<br>
		ケース REQUEST_METHOD_GET:<br>
		デフォルト:<br>
			curl_setopt($curl, CURLOPT_HTTPGET, TRUE);<br>
			休憩;<br>
	}<br>
}<br>
function curl_set_headers($curl, $headers) {<br>
	if ( empty($headers) ) return ;<br>
	if ( is_string($headers) ) <br>
		$headers = explode("rn", $headers);<br>
	#型修复<br>
	foreach ( $headers as &$header ) <br>
		if ( is_array($header) ) <br>
			$header = sprintf('%s: %s', $header[0], $header[1]);<br>
	curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);<br>
}<br>
function curl_set_datas($curl, $datas) {<br>
	if ( empty($datas) ) return ;<br>
	curl_setopt($curl, CURLOPT_POSTFIELDS, $datas);<br>
}<br>
function curl_request($url, $method = REQUEST_METHOD_GET, $datas = NULL, $headers = NULL) {<br>
	静的 $curl;<br>
	if ( !$curl )<br>
		$curl = curl_init();<br>
	curl_switch_method($curl, $method);<br>
	curl_setopt($curl, CURLOPT_URL, $url);<br>
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);<br>
	curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE); <br><div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:簡易PHP判定次の記事:簡易PHP判定