質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

RSS

RSS(Really Simple Syndication)はブログのエントリやニュースの見出し、標準のフォーマットの音声やビデオなどを発行するために使われるウェブフィードのフォーマットの集合体です。

Q&A

0回答

351閲覧

Blog(xml)がhttpsになったらrssリーダーが表示しない。

dodoranoni

総合スコア0

CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

RSS

RSS(Really Simple Syndication)はブログのエントリやニュースの見出し、標準のフォーマットの音声やビデオなどを発行するために使われるウェブフィードのフォーマットの集合体です。

0グッド

0クリップ

投稿2023/03/03 00:59

実現したいこと

httpsのサイトのrssを表示したい

前提

CGIに関してとても初心者で申し訳ないです。
かなり昔からCANDY CGI様の「RSS reader Type1」を利用させていただいてます。
https://www.candy-cgi.com/perl/RSS_reader_Type1.html
セキュリティー向上のため、サイトをhttpにしました。
すると、今まで使えてたこのプログラムが何も表示しなくなってしまいました。

発生している問題・エラーメッセージ

httpsのサイトのrssの場合何も表示されません。

該当のソースコード

perl

1#!/usr/bin/perl 2 3#===================================================================== 4# 作成 5#===================================================================== 6# 名 称: RSS reader Type1 Ver170 7# 作成者: CANDY CGI 8# 作成者サイト: http://www.candy-cgi.com/ 9 10#===================================================================== 11# 設定の変更【ここから】 12#===================================================================== 13#■このファイルの先頭の1行のperlのパスを指定してください。(「#!/usr/local/bin/perl」や『#!/usr/bin/perl』など) 14#「#!」の前には、空文字や空行や他の文字が入らないようにしてください。 15 16#■表示件数 10件の場合は'10' 取得した全てを表示する場合は'0' 17$max = '5'; 18 19#■RSSを取得する間隔を分で指定 15分の場合は'15' 20$check = '15'; 21 22#■Newマークをつける時間 24時間以内に配信された記事にNewマークをつける場合は'24' Newマークを使わない場合は'0' 23$new = '0'; 24 25#■読み込むRSSのURL 複数設定する場合は『,』で区切ってください 例('http://アドレス','http://アドレス') 26@url = ('ここにrssファイルのアドレス'); 27 28#■各記事ごとにブログ名やサイト名などを表示したい場合、New!マークのデザインを変更したい場合は、下部の"■各記事の表記部分デザイン"を変更してください 29 30######################################################################## 31#■文字数制限 32#・表示する文字数 50文字の場合は'50' 全部表示する場合は'0' 33######################################################################## 34#■ブログ名 35$site_nagasa = '0'; 36 37#■記事タイトル 38$title_nagasa = '0'; 39 40#■記事の説明(記事の要約) 41$kiji_nagasa = '0'; 42 43#################################################################### 44# ■NG設定 45# ・指定された文字が含まれていると表示しません 例('ero','出会い系') 46# ・必要ない場合は() 47#################################################################### 48#■ブログ名 49@dels_tit = (); 50 51#■ブログURL 52@dels_lin = (); 53 54#■記事タイトル 55@deltit = (); 56 57#■記事の説明(要約) 58@delkiji = (); 59 60#■記事URL 61@dellin = (); 62 63#===================================================================== 64# 設定の変更【ここまで】 65#===================================================================== 66 67$file = 'log.cgi'; 68unless( -e "$file" ){open FH, ">$file";} 69 70use XML::FeedPP; 71use HTTP::Date; 72use Encode; 73 74$time = time; 75$check = $check * 60; 76$new_xp = $new * 3600; 77 78open(IN,"<$file"); 79eval{flock(IN, 2);}; 80@main = <IN>; 81close(IN); 82 83chomp($main[0]); 84$log_t = $main[0] + $check; 85 86if($log_t <= $time){ 87foreach $xxx (@url) { 88$feed = ""; 89 90eval{ 91local $SIG{ALRM} = sub {die "timeout"}; 92alarm 3; 93$feed = XML::FeedPP->new($xxx); 94}; 95alarm 0; 96if ($@) {next;} 97 98@list = $feed->get_item(); 99 100foreach $item (@list) { 101my $site_t = $feed->title; 102my $site_l = $feed->link; 103my $title = $item->title; 104my $link = $item->link; 105my $des = $item->description; 106my $tix = $item->pubDate; 107 $tix = str2time($tix); 108 109&tag($site_t); 110&tag($site_l); 111&tag($title); 112&tag($link); 113&tag($des); 114&tag($tix); 115 116$next = "0"; 117for(@dels_tit){if($site_t =~ /$_/i){$next="1"; last;}} 118for(@dels_lin){if($site_l =~ /$_/i){$next="1"; last;}} 119for(@deltit){if($title =~ /$_/i){$next="1"; last;}} 120for(@dellin){if($link =~ /$_/i){$next="1"; last;}} 121for(@delkiji){if($des =~ /$_/i){$next="1"; last;}} 122if($next eq "1"){next;} 123 124$text = $site_t; 125$length = length(decode('utf-8', $text)); 126if ($site_nagasa ne "0" && $length > $site_nagasa) {$site_t = Encode::encode_utf8(substr(Encode::decode_utf8($site_t), 0, $site_nagasa)); $site_t = $site_t ."...";} 127 128$text = $title; 129$length = length(decode('utf-8', $text)); 130if ($title_nagasa ne "0" && $length > $title_nagasa) {$title = Encode::encode_utf8(substr(Encode::decode_utf8($title), 0, $title_nagasa)); $title = $title ."...";} 131 132$text = $des; 133$length = length(decode('utf-8', $text)); 134if ($kiji_nagasa ne "0" && $length > $kiji_nagasa) {$des = Encode::encode_utf8(substr(Encode::decode_utf8($des), 0, $kiji_nagasa)); $des = $des ."...";} 135 136unshift @inp, "$tix<>$title<>$link<>$des<>$site_t<>$site_l\n"; 137} 138} 139 140$xx = @inp; 141if(0 < $xx){ 142@sortinp = sort { (split(/<>/,$b))[0] <=> (split(/<>/,$a))[0] } @inp; 143if ($max ne "0"){splice @sortinp, $max;} 144unshift @sortinp, "$time\n"; 145 146open(OUT,"+< $file"); 147eval{flock(OUT, 2);}; 148eval{truncate(OUT, 0);}; 149seek(OUT, 0, 0); 150print OUT @sortinp; 151eval{flock(OUT, 8);}; 152close(OUT); 153} 154} 155 156open(IN,"<$file"); 157eval{flock(IN, 2);}; 158@log = <IN>; 159close(IN); 160 161shift(@log); 162 163print "Content-type: text/html; charset=utf-8\n\n"; 164print <<EOM; 165<div class="rss_con"> 166EOM 167 168for(@log){ 169chomp $data; 170my ($timex,$titlex,$linkx,$kiji,$s_title,$s_link) = split(/<>/, $_); 171 172($sec,$min,$hour,$mday,$mon,$year,$wno) = localtime($timex); 173@wdays = ('日','月','火','水','木','金','土'); 174$year = $year + 1900; 175$year = substr($year,2,2); 176#時間表示 177my $timex_sp = sprintf("%02d/%02d/%02d",$year,$mon+1,$mday); 178my $txp = $timex + $new_xp; 179 180# ■各記事の表記部分デザイン 181# $timex_spで時間、$linkxで記事URL、$titlexで記事タイトルを表示しています。 182# $s_titleでブログ名、$s_linkでブログのURL、$kijiで記事の説明(要約)を追加表示できます。 183# 184# ※表示部分の前後にある『print <<EOM;』の行と『EOM』の行は重要な部分なので変更しないでください。 185########################################################### 186#記事部分 187########################################################### 188print <<EOM; 189 <div class="rss_t">$timex_sp</div> 190 <div class="rss_l"><a href="$linkx" target="_blank">$titlex</a></div> 191EOM 192########################################################### 193 194} 195print "</div>\n"; 196exit; 197 198sub tag{ 199$_[0] =~ s/\r\n/<br>/g; 200$_[0] =~ s/\r/<br>/g; 201$_[0] =~ s/\n/<br>/g; 202$_[0] =~ s/<.*?>//g; 203$_[0] =~ s/</&lt;/g; 204$_[0] =~ s/>/&gt;/g; 205} 206

試したこと

xmlのファイルをいろんな場所に置くなどして試してみたのですが、プログラムがある場所がhttpsかどうかは関係なく、rssファイル(xml)がある場所がhttpsになっていると読み込みをしてくれなくなりました。

use HTTP::Date;

use HTTPS::Date;
にしてみましたが、500エラーになりました。

補足情報(FW/ツールのバージョンなど)

作者様へメッセージを送ってみましたが返答が無かったため、こちらに投稿してみました。

これは何か修正をすることでhttpsのサイトのデータを読み込んでくれるようになるでしょうか?
それともこのCGIではもうhttpsに対応することは不可能なのでしょうか?
もし修正することでまだこのCGIが利用可能でしたら、修正方法を教えてください。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dameo

2023/03/03 07:19

とりあえずtagにPerlを入れましょう。環境も明記した方がいいでしょう。 自力でメンテナンスしたいなら、真面目にPerlを勉強してください。 修正可能か不可能かは意見が分かれそうな気がします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問