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

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

ただいまの
回答率

90.62%

  • PHP

    19769questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Python

    7444questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

会員制サイトにログインして検索データを抜き出したい

解決済

回答 1

投稿 ・編集

  • 評価
  • クリップ 2
  • VIEW 1,270

chapp

score 156

お世話になってます。
何度か同じような質問をさせて頂いておりますが、頭を整理したいので、再度質問させて下さい。

例えば、Facebookのような会員サイトがあります。
そこには多くのユーザがいますが、そのユーザに代わってプログラムが自動でログインし、ユーザーが予め登録したキーワードでサイト内検索を行い、その結果を抽出・保存するといった一連の流れを、プログラムにて自動で行える仕組みを考えてます。

※ユーザに代わってデータを抽出したいので、ユーザ単位でログインする方式を考えており、アクセス元もユーザの数だけ違うアクセス元である必要があります。

この自動でログインするユーザは、予めこちら側のデータベースにユーザ自ら、ログインするためののIDとパスワードや、検索したいキーワードを保持しておくのですが、当初は、ウェブアプリケーションとしてPHPで構築するよう考えていました。

と、ここで質問させて下さい。

1.アクセス元をユーザ別にするには、ウェブベース(PHPでcronで廻したい)では無理でしょうか?

2.以前、 https://teratail.com/questions/5191 こちらで、似たような質問をさせていただいた際、Cookieによる認証が求められることがあるとご指摘頂いていたのですが、これだとウェブベースでcronを用いたPHPで組んだシステムだとアクセス元は一緒になるだけではなく、動作そのものが正常に機能しないということになるのでしょうか?

3.PHPとVBを以前に少々触っていたことがある、、というレベルなので、極力PHPで構築したいと思っていますが、PHPで出来るものなのでしょうか?

4.EXEファイルならぬインストール型のアプリであれば、必然的にユーザ単位でのアクセスとなるだろうと、素人なりに考えていますが、このインストール型のアプリの場合、今回の仕組みを考えるとどのような言語が適切なのでしょうか?


以上ですが、これまでPHPを触っては来ましたが、どれも簡単なものばかりで、今回の質問のように第三者のサイトにアクセスすることは経験が無く、何処から始めて行けばいいのかが整理が付かない状況です。

恐れ入りますが、上記質問に加え、準備して行く上でのポイント等もアドバイス頂けると幸いです。
宜しくお願い申し上げます。
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

会員制サイトはそもそも、そういった動作を想定していません。
なので、利用規約に反する可能性が非常に高いです。(ちゃんとした利用規約を書いているサイトでは、ですが・・・。)
付け加えて言うと、その作ろうとしているプログラムの動作次第では、法に抵触する可能性もそれなりにある事を事前によく考えて下さい。
また、そういった事を気兼ねなく行えるのは、自社サービスに対してだけですので、その点も重ねて申しあげておきます。


その上で、PHPでcookieを引き継いで使うこと自体は可能です。(たぶん他の方が簡単ですが)
ただ、セッションIDをログイン時に取ってくる場合が多いので、同一セッションでアクセスする間はそれを使う必要があります。
この辺はそのWebサイト毎に実装が違うので、それぞれでちゃんと動作を解析してやらないとうまくいかないと思います。
(セッションIDのkey、形式、有効時間、CSRF対策等)

複数ユーザで検証したいとの事ですが、同一IPからの複数セッションを許可していないサイトでは基本的に出来ません。
IPを詐称する事も可能ですが、これは普通はWebサーバ、もしくはLBで対策しているので、できないサイトは諦めるしかないと思います。
同一IPからの複数セッションが可能なサイトであれば、PHP側で複数のセッション情報を管理すれば可能なはずです。


中途半端な回答で申し訳ございませんが、あまり詳しくお話するとクラッキング講座みたいになるので、この辺までで。
ご自身で一度会員制のWebサービスをCMSを利用せずに作ってみると、大体のところが把握できると思います。

以上、ご参考になれば幸いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/01/25 11:35

    「ユーザに代わってログイン」するために「ユーザのIDとパスワードの入力を他のサイトが求める」のであれば利用規約に反する以前に…まず使おうと思うユーザが自分と身内以外誰もいないのでは?という疑問がありますね。実際に私も類似するサービスを叩き上げで作ったことがありますが、自分とごく限られた友人しか利用していません(最初に想定したとおり)。

    キャンセル

  • 2015/01/25 18:11

    利用規約で制限されている場合、ID,passをどう収集しているかに関わらず、ロボット等によるアクセス自体を禁止している場合が多いです。
    例えばchapp様が例に挙げている「Facebook」ですが、利用規約の「3.安全」の第2項に、以下の様に書いてあります。
    「弊社から事前に許可を得ることなく、自動化された手段(情報収集ボット、ロボット、スパイダー、スクレーパーなど)を使用して、Facebookにアクセスすることはできません。」
    大手さんは、大抵この手の規約があると思います。
    Twitterなんかは元々API利用前提なので、厳密な利用規約を設けた上で許可している形だったはずですが。

    キャンセル

  • 2015/01/26 10:10

    utunさん

    おはようございます。お疲れの中、早朝の回答ありがとうございます。
    また、追加でのご意見をありがとうございます。

    規約に反して・・・仰る通りですね。法的に触れるような事はするつもりないので、実際に利用するかは、よく検討して行いたいと思います。客観的なご指摘ありがとうございます。


    >中途半端な回答で申し訳ございませんが、あまり詳しくお話するとクラッキング講座みたいになるので、この辺までで。

    いえいえ、こうして回答頂くだけでも大感謝です。
    ただ、今回質問した仕組みは、これまで触れたことが無かったので、 実際に利用するか否かは、きちんと検証したいとは思いますが、プログラムの仕組みとしてもう少し把握したいので、今一度質問させて頂いても宜しいでしょうか。

    これまで、会員専用サイトはオープンソース等は使わず作った事はあるのですが、制作において必要と思われる部分のみ調べながら構築したので、知識も乏しいかとは思っています。

    そこで、


    >PHPでcookieを引き継いで使うこと自体は可能です。(たぶん他の方が簡単ですが)
    >ただ、セッションIDをログイン時に取ってくる場合が多いので、同一セッションでアクセスする間はそれを使う必要があります。

    このcookieの取扱いについて質問させて下さい。
    これまでcookieという意味では、セットしたりcookieを取り出したりする程度しか行った事が無く、また、自動化という意味ではcronにてDBの登録状況を確認したり、メールを配信したりする程度しか構築したことが無いのですが、ブラウザが立ち上っていない状況において、「cookieは何処に保存される?」、「そのcookieの取扱いはどんな流れになる?」と疑問ばかりが残ります。



    >複数ユーザで検証したいとの事ですが、同一IPからの複数セッションを許可していないサイトでは基本的に出来ません。


    と仰っておられますが、もし「同一IPからの複数セッションを許可しているサイト」であった場合、このcookieの取扱いについてどんな感じになるのでしょうか?

    自分自身が自らのPCでブラウザを立ち上げてアクセスする場合であれば、cookieの流れはイメージしているつもりですが、この自動化、かつ複数という状況においてのcookieの流れがイメージ出来ないのです。
    この辺りのこと、ご教示頂けると幸いです。


    また、


    >複数ユーザで検証したいとの事ですが、同一IPからの複数セッションを許可していないサイトでは基本的に出来ません。
    >IPを詐称する事も可能ですが、これは普通はWebサーバ、もしくはLBで対策しているので、できないサイトは諦めるしかないと思います。


    との事ですが、同一のアクセス元(同一IP)でのアクセスが出来ない場合、.NETのようなインストール型のアプリであれば(ユーザー自身のPCからアクセス)であれば可能という事になるのでしょうか?
    もちろん、検証も必要なのでしょうが、この辺りのこともご意見頂けると助かります。



    さらに、話が前後しますが、


    >PHPでcookieを引き継いで使うこと自体は可能です。(たぶん他の方が簡単ですが)

    との事ですが、その簡単と言われている言語は何になるのでしょうか?
    当方、PHPくらいしか触った経験が無いため(それとVBAを少々)、比較検討が全くできない状況です。
    この辺りもご意見頂戴出来ると幸いです。


    以上ですが、引続きアドバイス等頂戴出来ると助かります。
    お忙しいなか恐縮ですが、宜しくお願い致します。

    キャンセル

  • 2015/01/26 13:40

    >このcookieの取扱いについて質問させて下さい。
    PHPでWebページにアクセスする場合、curl等を利用すると思いますが、
    情報自体はWebブラウザで受ける場合と同等のモノが取得できるので、cookieも自前で取得して管理する事が可能です。
    私もPHPでそういったものを書いた事はありませんが、curl_setoptでcookieを保存するファイルを指定できる様です。
    基本的にはこのcookieにセッション情報も含まれるので、これをユーザ毎に管理する事で、複数ユーザでのアクセスも原理的には可能なはずです。
    curl_setoptでcookieを取得するのであれば、ユーザ毎に別のcookie保存ファイルを指定すれば良いかと思います。

    >同一のアクセス元(同一IP)でのアクセスが出来ない場合、.NETのようなインストール型のアプリであれば(ユーザー自身のPCからアクセス)であれば可能という事になるのでしょうか?
    それは可能です。
    アクセス元のIPが別なら、この部分は気にする必要はありません。

    >その簡単と言われている言語は何になるのでしょうか?
    どれが簡単かというのは、それぞれの人のスキルセットにも依存しますが、
    一般に言って、PHPは複雑な処理を記述し辛い言語です。
    Apache連携前提のWebページバックエンドとしては非常に優秀な言語ですが、
    独立したアプリケーションとして動かす場合は、他の言語(私ならRubyかNodeJS辺りでしょうか)を選択する方がベターかと思います。

    但し、言語仕様として、いわゆるクラッキングに利用されるような動作を制限されている事があるので、
    厳密に言って、確実にどのサイトでも原理的に動作可能と気軽に言えるのはC言語くらいかと思います。
    そういう意味ではVC++辺りが最も汎用性が高く、確実に動作までもっていけるものかもしれません。
    ただ、書くのはものすごい手間ですが・・・。

    キャンセル

  • 2015/01/26 14:58

    お忙しい中、親切丁寧な回答をありがとうございます。

    私自身、知識が乏しいなかで、アドバイス頂いた無いようなとても貴重です。

    規約や法的に問題ないことを検証し、色々と試してみたいと思います。

    ありがとうございました!

    キャンセル

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

  • ただいまの回答率 90.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    19769questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Python

    7444questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。