2010年07月25日


自分用WEBサービス : PHP版 : Seesaa の設定の「更新」( Ruby よりやる事が多くなるのでおすすめできません )

設定データを直前のページから正規表現等で取り出して設定しないと汎用的なコード
にはなりません。正式 API では無いのでそこまでやっても、仕様が変更されるおそれが
あるので、そのへんを自動的にする Ruby が能力で勝っています。

このサンプルでは、自分の管理ページで実際に処理を行って、ieHTTPHeaders
でダンプしたものを直接貼り付けてテストしました。データは同時に更新されて
いましたので、「再構築」だけという選択肢は無いようです。

しかし、このサンプルでは、一連のブラウザの処理の代わりを行う方法の全てが
書かれており、いろいろな場面で利用可能なはずです。

※ CURLOPT_MAXREDIRS と CURLOPT_FOLLOWLOCATION はリダイレクト用です
※ CURLOPT_POSTFIELDS は、配列で渡すと URL エンコードしてくれます。
<?
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

// *********************************************************
// curl 共通
// *********************************************************
$curl = curl_init();
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);
// ***********************************************************
// クッキー等が自動的に受け渡しされるようにする
// ***********************************************************
curl_setopt($curl, CURLOPT_COOKIEFILE, './cookiefile.txt'); 
curl_setopt($curl, CURLOPT_COOKIEJAR, './cookiefile.txt'); 
curl_setopt($curl, CURLOPT_MAXREDIRS, 10); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 

// *********************************************************
// まず最初のページを取得する
// *********************************************************
$seesaa_url = "https://ssl.seesaa.jp/pages/welcome/login/input";
curl_get( $seesaa_url, true );

// *********************************************************
// サインインする
// *********************************************************
$seesaa_url = "https://ssl.seesaa.jp/pages/welcome/login/input";
$seesaa_data = array();
$seesaa_data['member__email'] = 'メールアドレス';
$seesaa_data['member__password'] = 'パスワード';
curl_post( $seesaa_url, $seesaa_data, true );

// *********************************************************
// 設定ページの表示
// *********************************************************
$blog_id = "2181378";
$seesaa_url = "https://blog.seesaa.jp/pages/my/blog/home/?blog_id=$blog_id";
curl_get( $seesaa_url );

// *********************************************************
// 目的の更新
// *********************************************************
$seesaa_url = "https://blog.seesaa.jp/pages/my/blog/settings/basics/edit/input";
$seesaa_data = 'blog__title=WEB+%90E%90l&__tags-backuped=&__tags-changed=0&__tags=&__tag=&__tags-init-backuped=seesaa-no-val&blog__description=WEB%83T%83C%83g%8D%5C%92z%82%C9%95K%97v%82%C8%90E%90l%8C%7C%82%CC%8F%D0%89%EE&blog_category_id=41&blog__keywords=WEB%2CPHP%2Cjavascript%2C%83e%83N%83j%83J%83%8B%2C%8BZ%8Fp&blog__nickname=ユーザー&blog__auto_rebuild=0&blog__public=1&blog__sitemap=1&style__weather=&bookmark_service=yahoo&bookmark_service=livedoor&bookmark_service=hatena&blog_ext__post_twitter=1&twitter_setting__auto_post=0&twitter_setting__ap_format=&twitter_setting__ap_order=1&twitter_setting__ap_reply=1&twitter_setting__category_id=0&twitter_setting__ap_title_format=%3C%25+date+%7C+date_format%28%22%25Y%94N%25m%8C%8E%25d%93%FA%22%29+%25%3E%82%CC%82%C2%82%D4%82%E2%82%AB&url_shortener__service=Bitly&url_shortener__login=ユーザー&url_shortener__api_key=R_3a9ed6fb41c0d66a2fd5baa45157d037&blog__mailmag_text=1&blog__mailmag_html=1&blog__mailmag_summary=1&blog__ui_level=0&blog__alert_comment=1&blog__alert_tb=0&blog__alert_email=メールアドレス&blog__richtext=0&blog__index_page_cnt=3&blog__archives_page_cnt=3&blog__archives_page_sort=1&blog__category_page_cnt=3&blog__category_page_sort=1&blog_ext__category_article_cnt=20&blog__rss_body=1&blog_ext__upload_detail_page=1&blog_ext__mobile_pagerize_size=2048&blog_ext__common_header=0&blog_ext__cache_width_thumbnail=320&blog_ext__full_view_thumbnail=1&blog_ext__upload_panel_layout=0&blog_ext__amazon_trackingid=&blog_ext__use_trace_searcher=0&trace_searcher=yahoo&trace_searcher=amazon&trace_searcher=twitter&trace_searcher=blog&force_reload=%8E%C0%8Ds';
curl_post( $seesaa_url, $seesaa_data );

curl_close($curl);

// *********************************************************
// curl GET 処理
// *********************************************************
function curl_get( $target_url, $ssl_option=false ) {

	global $curl;

	curl_setopt($curl, CURLOPT_URL, $target_url);
	curl_setopt($curl, CURLOPT_POST, false);


	if ( $ssl_option ) {
		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
	}

	$result = curl_exec($curl);

	return $result;

}

// *********************************************************
// curl POST 処理
// *********************************************************
function curl_post( $target_url, $postfields, $ssl_option=false ) {

	global $curl;

	curl_setopt($curl, CURLOPT_URL, $target_url);
	curl_setopt($curl, CURLOPT_POST, true);
	curl_setopt($curl, CURLOPT_POSTFIELDS, $postfields);

	if ( $ssl_option ) {
		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
	}

	$result = curl_exec($curl);

	return $result;

}

?>
OK

関連する記事

自分用WEBサービス : Ruby による Seesaa の設定の「更新」
( つまり、最近アクセスされたページの再構築のようですが )

今回以下のソフトでテストしたのですが、思った以上に使いやすい事が解りました。
Cc_01
【ColorConsole 1.77】 コマンドプロンプト機能を拡張するタブウインドウを使ったWindows アプリケーション
posted by at 2010-07-25 23:31 | WEBサービス | このブログの読者になる | 更新情報をチェックする