1read 100read
2013年17プログラム230: Perlを使って2ちゃんねるにHello Worldを書き込む (221)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
Eclipse統合M34【Java/C++/Ruby/Python/Scala】 (516)
Git 6 (556)
【アンチ】関数型言語は使えない【玩具】 2 (498)
【C++】 DirectX初心者質問スレ Part38 【C】 (107)
懐かしきベーマガの面白かった投稿プログラムを語る (785)
プログラミング雑談スレ (359)
Perlを使って2ちゃんねるにHello Worldを書き込む
1 :2007/07/15 〜 最終レス :2013/07/30 俺、がんばる。みてて。
2 : とりあえず、http://www.activestate.com/ からperlをインストール。 というか、すでに入っているんだけど^^;
3 : さて、httpをしゃべるライブラリには何を使ったら良いだろうか? むかしLWP::Simpleを使ったことはあるとはいえ、 Simpleっていうぐらいだからもっと高度なことをするときには 別のものがいいのだろうか?
4 : >3で結果が見えたな
5 : Perl でやるより Curl でやった方が楽だと思うが...
6 : なんかCurlって名前のものいくつか無い? 言語? php用ライブラリ?
7 : あぁ、やっとわかったよ。 http://d.hatena.ne.jp/keyword/curl ライブラリとしてのlibcurl、それをコマンドラインから使用するcurl。 それとはまったく別の、次世代ウェブ記述言語Curlがあるんだね。 >>5 さんがいっているのはコマンドライン用Curl? 悪くは無いんだけど、共有レンタルサーバーでも使えるようなやり方を 目指しているので。でもあとで使うよ!
8 : ところで、phpではlibcurlを使うのかな? とりあえず、必要と思われる機能は UserAgentなどのヘッダやクッキーをいろいろ設定してhtmlを読み込む。 帰ってくるヘッダやクッキーを読み取れる機能。 まあ、シンプルじゃないライブラリなら大概、対応しているだろう。 あと個人的に、proxy対応、https対応のライブラリであってほしい。 さぁ、どんなライブラリがあるのか探すぞ!
9 : あと認証機能もほしいね。BASIC認証とかいろいろ
10 : LWPってlibwww-perl の略だったのか。今頃気づいたwww
11 : >>1 Javaが簡単だお
12 : あの〜、ずいぶん久方ぶりの書き込みなんですけど僕もperlを使ってみたいなぁと思うんです。 だけどあの英語漬けのサイトで一体どうやればダウンロードできるのかわかりません。 誰か暇つぶしついでに教えていただけませんか?
13 : とりあえず、肩慣らしにこのスレを読み込むコード use LWP::Simple; print get 'http://pc11.2ch.net/test/read.cgi/tech/1184483810/';
14 : >>11 Javaかぁ、もっと大規模なのを作るときは使うけど、 簡単なツールレベルだと、ちょっと重く感じるな。 あと共有サーバーじゃ大概つかえないし。
15 : しかし、PerlではLWPを使うのが基本でいいのだろうか? 今はもっといいのがあるのではないかと思いながら、ぐぐっていると ここみれば出来そうw http://homepage3.nifty.com/hippo2000/perltips/LWP.html
16 : うほっ!らくだなw http://digit.que.ne.jp/work/index.cgi?Perl%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%2FLWP#i3 LWPで、「https:// 」で始まるSSL使用サイトにアクセスできますか? 編集 できます。 LWPはCrypt::SSLeayがインストールされていれば、自動的にSSL使用サイトへのアクセスも適切に処理してくれます。 アクセス先が「https:// 」で始まっていても、スクリプトを変える必要はまったくありません。 それどころか、プロトコルが「http」か「https」かということすら判定する必要はありません。
17 : よし、たいしたことができないであろう、LWP::Simpleじゃなくて、 もっといろいろできるであろうLWP::UserAgentを使ったコートだ use LWP::UserAgent; $ua = LWP::UserAgent->new; $ua->agent("Mozilla/8.0"); $req = HTTP::Request->new(GET => 'http://pc11.2ch.net/test/read.cgi/tech/1184483810/'); $req->header('Accept' => 'text/html'); $res = $ua->request($req); if ($res->is_success) { print $res->content; } else { print "Error: " . $res->status_line . "\n"; }
18 : 荒らしスクリプトをオープンで作ってる・・・
19 : >>18 違いますよ。ただの2ちゃんねるブラウザですよ。^^;
20 : ちょっとIEがだすhttpヘッダみたいから、これいれる。 http://www.blunck.info/iehttpheaders/iehttpheaders.html
21 : あれ?>>20 のやつVistaで動かない。XP上のIE7なら動いていたんだが・・・ まあ、それならそれでFirefoxのやつつかうけどさ
22 : とりあえず、クッキーとか何も持っていない状態でブラウザから普通に書き込むと、 POSTで以下の内容が送られるな。 submit=%8F%91%82%AB%8D%9E%82%DE FROM=aaa mail=bbb MESSAGE=ccc bbs=tech key=10桁の数字 time=10桁の数字 そして、以下のクッキーを保存しろといってくる。意味はぐぐればわかるだろう PON=俺のホスト; expires=Friday, 01-Jan-2010 00:00:00 GMT; path=/ HAP=7桁の数字; expires=Friday, 01-Jan-2010 00:00:00 GMT; path=/ JavaScriptが有効になっていると少し変わるようだ。 いつの間にか、NAME="aaa" MAIL="bbb" がセットされており、 送信するときに、上記のクッキーを送っている。まあ無視して良いだろう。
23 : WWW::2chに書き込み機能は相変わらず無いのか?
24 : >>23 そんなのがあるのかw あとでみてみる。 2ちゃんねるを知っている人には当たり前だろうが、 初めて書き込むときには、「上記全てを承諾して書き込む」がでる。 クッキー名hanaにmogeraが設定されているかどうかで判断されるようだ。 これは今現在の話なので将来は変わる?スレごとに違うのかな? とりあえずクッキーを持たずに書き込むと飛ばされる「上記全てを承諾して書き込む」ページには >>22 で送られる内容にくわえ、hiddenでhana=mogeraが追加されている。(subject=""もあるがスレ立て時に使われるのか?) そこらへんを見れば、クッキー名や値が変わっても対応できるのかもしれない。
25 : どうやら、書き込むときに hana=mogera と PON = 俺のホスト名 が 無ければいけないようだ。 hana=mogeraはさっきも書いたように同意するかどうか、 PONが変わる(つまり回線をつなぎなおしたとき)は確認画面に飛ばされる。 HAPはなんだろう?無くても書き込めるようだがまたセットさせられる。 さてぐぐるかw
26 : そういや、ルータを使っている場合に自分のホスト名って (外部のサーバーなしに)取得できるんかいな? ルータのUPnP機能に問い合わせればわかるようなことを 以前見た気がするが・・・ まあ、2ちゃんねるに限れば、普通にアクセスして 戻ってきたクッキーをちゃんと記憶すればいいだろうけど。
27 : ふう。風呂はいっていたよ。 さてのんびりやるぞ! これからの投稿予定は次のとおりとなっております。お楽しみに。 ・POSTを使ったデータ送信 ・クッキーの取得 ・クッキーの送信 ・書き込めた! ・やっぱ文字コードはUNICODEでしょ! ・BASIC認証がある場合は・・・ ・それ以外認証ページは・・・ ・httpsページにトライ! ・そしてphp版へ・・・ ・そしてCurl版へ・・・
28 : とても楽しめそうにない件について。
29 : >>27 Perl で書けたのであれば Curl はやらなくて良いと思うよ。 それより書き込みだけじゃなく、スレ立ても出来る様になると嬉しいんじゃない?
30 : 楽しいなあ 楽しいなあ 楽しいなあ
31 : どうも荒らしスクリプトを作ろうと思っている様にしか思えんなぁ。 そもそも人にきかなきゃわからんレベルの人間がやるものでもないし。
32 : 俺、別に聞いてないし・・・・。
33 : 何でもしたり顔でケチ付けようとする人間はいるもんだよ 自分でも言ってる意味が分かってないから、反論しても無駄
34 : 必死だな。
35 : 何事にも必死に取り組まなければ2ちゃんねらになっちゃう!! そう子供たちに教えるべきだね。
36 : キチガイがいるな
37 : >>36 自己紹介乙!
38 : test
39 : あー。書き込めちゃった。まあゆっくりやるかw
40 : 脳内妄想が激しいスレだな
41 : 暗いスレだな
42 : ていうか君以外のレスは全部 perl で書かれた bot がやってるって知ってた?惟も含めて。
43 : 日本語OK?
44 : 縺薙l縺ッ繝悶Λ繧ヲ繧カ縺九iUTF8縺ァ譖ク縺崎セシ繧薙□譁蟄
45 : はいはい、またーりいくよ。 テスト用に、サーバーに送信したデータをそのまま表示するだけのphpコード ちゃんと送られているかこれで確認! <?php header("Content-Type: text/plain"); print "[REQUEST]\n"; print_r(apache_request_headers()); print "[SERVER]\n"; print_r($_SERVER); print "[GET]\n"; print_r($_GET); print "[POST]\n"; print_r($_POST); print "[COOKIE]\n"; print_r($_COOKIE); print "[FILES]\n"; print_r($_FILES); ?> IEはダウンロードしやがるぜ。けっ
46 : さあて、いよいよpostだ。実際に動かすときは自分のサーバーに置いた スクリプト(>>45 でいい)に向けてpostするように。 use LWP::UserAgent; $ua = LWP::UserAgent->new; $ua->agent("Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1)"); $req = HTTP::Request->new(POST => 'http://www.example.com/test.php?getdata=gettest'); $req->header( 'Accept' => '*/*', 'Accept-Language' => 'ja-JP,en-US;q=0.5', 'Referer' => 'http://www.example.com/', ); $req->content_type('application/x-www-form-urlencoded'); $req->content('postdata=posttest'); print $ua->request($req)->as_string;
47 : Hello World
48 : なんか資料見つけたので追加 http://age.s22.xrea.com/talk2ch/
49 : Hello World 2
50 : うーん。postするときのtimeの数字ってなんだろう? 日付に直すと Sun, 02 Jan 2005 17:55:08 GMT なんだが、 どこから取得すればいいのだ? htmlのフォームから取得できるのはわかるが・・・
51 : Hello World 3
52 : Hello World 3
53 : Hello World 3
54 : Hello World 3
55 : よくわからんが、現在時刻マイナス? で書き込めるようだ。
56 : ここでテストするのはやめれ。運営にチクるぜー?
57 : 通報しますた
58 : あぼーんだらけの某板に書いてみるとか
59 : 最悪板あたりでやればいいのでは
60 : 結局どこいったん>
61 : >>60 書き込めるようになって、飽きました。
62 : 他の鯖でも試してみた?
63 : Hello, World
64 : 僕も最近Perlを始めたので hello, world を作ってみました #!/usr/bin/perl use strict; my $hello = "hello, world"; my $tmp = './hello.world'; open OUT, "> $tmp" or die "$!"; flock OUT, 2; print OUT $hello; close OUT; open IN, $tmp or die "$!"; flock IN, 2; my @in = <IN>; close IN; unlink $tmp; foreach(@in){ s/$hello/herro, world/i; } my $res = `ping -c 4 www.google.com`; undef $res; print $hello; my @n = qq|\n|; foreach(@n){ print; }
65 : Unrecognized character \x81 at C:/Users/Dai/workspace/PerlTest1/MainTest2.pl line 19.
66 : ヒント:全角スペース
67 : このスレは車輪の再発明をするスレのようですね Age2ch Part14 http://pc11.2ch.net/test/read.cgi/software/1118219419/l50
68 : みんな車輪の再開発をして技術を身に付けるんだよ。 弟子は師匠の筆の跡を盗むもんだ。
69 : perlだけでなくrubyやpythonその他 いろいろな言語でこれをするならどれが一番きれいだと思う?
70 : elisp
71 : >>22 これってどうやって調べたん?
72 : hello world
73 : http://pc11.2ch.net/test/read.cgi/unix/1019380983/
74 : pythonだったら2ch書込用ライブラリ作ったけど
75 : omaeka
76 : うんこ
77 : cgiからも書き込めるようにしてみた。 だからアク禁くらってもレンタルサーバーにcgiぶっこめばいくらでも書き込める。
78 : うんこ
79 : うんこ
80 : てすと
81 : すまん 誤爆した。
82 : すまん 誤爆した。
83 : すまん 誤爆した。
84 : てすと
85 : てすと
86 : ActivePerl-5.10.0.1002-MSWin32-x86-283697.msi を保存して ダブルクイックすると 『インストール パッケージを開くことができませんでした。アプリケーションベンダに問い合わせ、このパッケージが有効なWindowsインストーラパッケージであることを確認してください。』 と出るのですが 何が問題あるのでしょうか
87 : >>86 インストーラパッケージが壊れていまし。 保存のインスト不良でした 早とちり で、しまったシマッタ!島倉千恵子! (;^_^A フキフキ
88 : とりあえず乙
89 : >>86 亀レスだがそれはファイルが壊れてるだけ。 俺もこの前WIN再インスコしたときになった。 activeperlのある鯖が不安定っぽいからリジューム機能のついてるツール使ってダウソしたほうがいいよ。
90 : test
91 : クライアントがクッキーを受け入れているかどうかってどうやって判断しているんでしょうか?
92 : 食わせたクッキーを吐き出させればいいよ。
93 : test
94 : wget --referer=http://pc11.2ch.net --save-cookie=c --load-cookie=c --post-data='hana=mogera&bbs=tech&key=1184483810&time=1&mail=&FROM=&MESSAGE=test' http://pc11.2ch.net/test/bbs.cgi
95 : #!/usr/bin/perl use warnings; use strict; use WWW::Mechanize; my $url = 'http://pc11.2ch.net/test/read.cgi/tech/1184483810/'; my $mail = 'sage'; my $text = 'Hellow World; my $mech = WWW::Mechanize->new; $mech->agent_alias('Linux Mozilla'); $mech->get($url); $mech->submit_form( form_number => 2, fields=>{ FROM => '', mail => $mail, MESSAGE => $text, }, ); print $mech->content; $mech->submit; print $mech->content; なんで、これでじゃかきこめないわけ?
96 : hello world
97 : ゆきさん、好きだ。
98 : そんぽぷへるめ
99 : http://pc11.2ch.net/test/read.cgi/software/1118219419/850 より use utf8; binmode STDOUT => ":encoding(cp932)"; binmode STDIN => ":encoding(cp932)"; use open IO => ":encoding(cp932)"; use Win32::IEAutomation; use Encode; $ie = Win32::IEAutomation->new( visible => 1, maximize => 0); $ie->gotoURL('http://pc11.2ch.net/test/read.cgi/software/1118219419/l1n'); $ie->getTextBox('name:', 'FROM')->SetValue(encode('cp932', "名無しさん@お腹すいた") ); $ie->getTextBox('name:', 'mail')->SetValue('sage'); $ie->getTextArea('name:', 'MESSAGE')->SetValue(encode('cp932', ">>845 \nソースきぼ〜ん") ) ; $ie->getButton('name:', 'submit')->Click(1) ; sleep(10); $ie->getButton('name:', 'submit')->Click(1) ; # 初回投稿時の確認ウィンドウ用
100read 1read
1read 100read TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
最も美しいプログラミング言語は? Part6 (538)
機械語なら俺に質問しろ!その2 (216)
プログラム板 自治スレッド Part14 (581)
【QBASIC互換!?】FreeBasic【GPL】 (530)
インテルC++コンパイラ9.0発表! (589)
★★Java質問・相談スレッド164★★ (527)
--log9.info------------------
( ´ ▽ ` )ノジブリ映画を鉄道模型で楽しむスレ (105)
倒産したor倒産しそうな鉄道模型会社・店舗スレ (101)
【中央】E233系を模型で楽しむスレ【京浜東北】 (343)
鉄道模型で学校を楽しむスレ (118)
車両ケース総合スレッド 3箱 (169)
鉄道模型初心者交流・質問スレッド★2 (560)
【横軽】信越本線の模型を語る【しな鉄】 (903)
田無スレ8 (227)
【芸備線】模型で楽しむ広島の鉄道【可部線】 (217)
マイクロエース社長が語る自社製品の品質について (195)
スレ立てるまでもない質問スレ (143)
HO〜Oレイアウトの話題スレ (220)
アーノルドカプラーの電車製品は消える運命。 (124)
TOMIX信者の会Part133【真談話室112】 (479)
[工エェェェ] KATO被害者の会 Part3[ェェェエ工] (135)
1/87 12mm鉄道模型の今後について (159)
--log55.com------------------
冷却系_冷却水交換_クーラント_LCC_強化剤_情報交換
● 覆面パトカー(36キロオーバー) ●
【ゼロウォーター・CCウォーター】簡易コーティング 30【類似後発品】
【自働】オートバックス 28店舗目【後退】
【Carrozzeria】カロッツェリア カーオーディオPart32【Pioneer】
黒クルマ乗りの洗車談義 Part.5
ワッチョイ【業者お断り】初心者のためのカーオーディオ vol.159
【カロ】楽ナビ総合スレPart40【Pioneer】