Advertisement
Guest User

Untitled

a guest
Feb 16th, 2015
858
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.57 KB | None | 0 0
  1. #!/usr/bin/env perl
  2. use LWP::UserAgent;
  3. use CGI;
  4. #html2dat.pl?bbs=software&server=anago&domain=2ch.net&key=1424024569
  5. my $ua  = LWP::UserAgent->new(agent => "Monazilla 1.0");
  6. my $q   = CGI->new;
  7. my $bbs = $q->param("bbs");
  8. my $key = $q->param("key");
  9. my $svr = $q->param("server");
  10. my $dom = $q->param("domain") || "";
  11. if($dom eq "") {
  12.     $dom = "2ch.net";
  13. }
  14. if($svr =~ /^([^\.]*)\.(.*)$/g){
  15.     $svr = $1;
  16.     $dom = $2;
  17. }
  18.  
  19. my $url  = "http://$svr.$dom/test/read.cgi/$bbs/$key/";
  20. print "Content-Type: text/plain; charset=Shift-JIS\n\n";
  21.  
  22. my $dl = &download("$url");
  23. if($dl->code == 200){
  24.     if($dl->content !~ /http:\/\/find.2ch.net\/faq\/faq2.php/m){
  25.         if(&htmlToDat($dl->content) != 0){
  26.             exit;
  27.         }
  28.     }
  29. }
  30. exit;
  31. sub download{
  32.     my $url      = shift;
  33.     my $request  = HTTP::Request->new(GET => "$url");
  34.     my $response = $ua->simple_request($request);
  35.     return         $response;
  36. }
  37. sub htmlToDat{
  38.     my $dat   = "";
  39.     my $html  = shift;
  40.     my @lines = split(/\n/, $html);
  41.     my $isTitle = 0;
  42.     my $title = "";
  43.     my $resNo = 0;
  44.     foreach my $line (@lines){
  45.         if($line =~ /\<div class\=\"ad\-\-right\"\>/){
  46.             next;
  47.         }
  48.         if($line =~ /\<title\>(.*)\<\/title\>/){
  49.             $title = $1;
  50.             #print "$title";
  51.         }
  52.         if($line =~ /\<dl class=\"thread\"\>/){
  53.             $isTitle = 1;
  54.             next;
  55.         }
  56.         if(!$isTitle){ next; }
  57.         if($line =~ /\<dt\>.+\<a href=\"(.+)\"\>(.+)\<\/a\>..(.+)\<dd\>(.+)\<br\>\<br\>/){
  58.             my $mail = "$1";
  59.             my $name = "$2";
  60.             my $date = "$3";
  61.             my $body = "$4";
  62.             $name =~ s/<b>(.+)<\/b>/$1/g;
  63.             $body =~ s/http:\/\/jump\.2ch\.net\/?(.+)\"/http:\/\/$1\"/g;
  64.             $body =~ s/<a href="(.+:\/\/.+)".+>(.+)<\/a>/$2/g;
  65.             $body =~ s/&gt;/>/g;
  66.             $body =~ s/&lt;/</g;
  67.             $body =~ s/&quot;/"/g;
  68.             if($mail =~ /mailto\:(.*)/){
  69.                 $mail = "$1";
  70.             }
  71.             if($mail =~ /email\-protection\#(.*)$/){
  72.                 # FUCK 2CH
  73.                 my $ep = "$1";
  74.                 my $r = hex(substr($ep, 0, 2));
  75.                 my $j = 2;
  76.                 for($j = 2; length($ep) > $j && substr($ep, $j, 1) ne "X"; $j += 2){
  77.                     my $t = chr(hex(substr($ep, $j, 2)) ^ $r);
  78.                     $mail .= $t;
  79.                 }
  80.             }
  81.             print "$name<>$mail<>$date<>$body<>";
  82.             if($resNo == 0){ print "$title"; }
  83.             $resNo++;
  84.             print "\n";
  85.         }
  86.         if($line =~ /<dt>.+<font color=green>(.+)<\/font>..(.+)<dd>(.+)<br><br>/){
  87.             my $name = "$1";
  88.             my $date = "$2";
  89.             my $body = "$3";
  90.             $name =~ s/<b>(.+)<\/b>/$1/g;
  91.             $body =~ s/https?:\/\/jump\.2ch\.net\/?(.+)\"/http:\/\/$1\"/g;
  92.             $body =~ s/<a href="(.+:\/\/.+)" .+>(.+)<\/a>/$2/g;
  93.             print "$name<><>$date<>$body<>";
  94.             if($resNo == 0){ print "$title"; }
  95.             $resNo++;
  96.             print "\n";
  97.         }
  98.     }
  99.     return $resNo;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement