1read 100read
2013年17プログラム230: Perlを使って2ちゃんねるにHello Worldを書き込む (221)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
ECMAScript デス 4 (402)
ネットワークプログラミング相談室 Port29 (372)
Jython、Groovy、JRuby - どれが一番効率的? (277)
ふらっとVisual C#,C♯,C#(初心者用) Part106 (992)
P2P型の完全匿名掲示板はまだ出来ないの?その3 (410)
TypeScript part1 (425)
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元 削除依頼 ▲
Ruby で GUI するスレ (402)
Pythonのお勉強 Part48 (644)
Java⇔RDBのMapping-Frameworkを語るスレ Vol.5 (959)
【安定版】ActiveBasicその12【4.24】 (958)
NullPointerExceptionを「ぬるぽ」と呼ぶスレ6 (448)
Java系スクリプト言語Groovy (880)
--log9.info------------------
【PSO2】禿より皆様へのお詫びとご説明 (540)
【PSO2】コフィーさん可愛い【ふぅ…】 (404)
【PSO2】ハゲRと書き込むスレ (526)
おペニペニ (200)
Wizardry Online ウィザードリィオンライン B564F (1001)
【PSO2】 何が楽しくてPSO2続けてるのか教えてくれ (198)
【PSO2】コ・レラちゃんの再登場を期待するスレ (280)
酒井と木村と宇野はしね (132)
【PSO2】PHANTASY STAR ONLINE2【3907】 (1001)
【PSO2】エクストリームクエストスレ 11 (1001)
【PSO2】PHANTASY STAR ONLINE2【3906】 (1001)
Wizardry Online ウィザードリィ忍者スレ B1F (621)
【PSO2】プレミアムセット購入キャンペーンwww (181)
【PSO2】PHANTASY STAR ONLINE2【3905】 (1001)
【PSO2】ブレイバー総合スレ【20】 (500)
ガリ貧奇形幼顔うさ耳バニー奴wwwwwwww (415)
--log55.com------------------
【バーチャルYoutuber】にじさんじ有ンチスレ15059【お待たせ、待った?】
【バーチャル】hololiveアンチスレ#3072【youtuber】
【かっさん】加藤純一ID無しスレpart3225【タカ】
【バーチャルYoutuber】にじさんじ有ンチスレ15060【OWO】
【バーチャル】hololiveアンチスレ#3073【youtuber】
【バーチャルYoutuber】にじさんじ有ンチスレ15061【匂わせアナル】
【バーチャルYouTuber】.LIVEアイドル部アンチスレ#9914【アップランド】
【バーチャルYoutuber】にじさんじ有ンチスレ15062【一応立てた】