[分享]模拟新浪微博自动登陆
博客原文地址: 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>