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

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

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

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Symfony2

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

PHP

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

Q&A

解決済

2回答

4929閲覧

400 Bad Request php

curekaishine

総合スコア82

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Symfony2

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

PHP

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

0グッド

0クリップ

投稿2015/10/30 01:31

あるウェブサイトにアクセスを行うphpのバッチにて以下のエラーが起きました
400 Bad Request
Your browser sent a request that this server could not understand.
Size of a request header field exceeds server limit.
Cookie

長時間起動していると発生するようなのですが防ぐ方法はありますか?
キャッシュ上限をあげる、もしくはリフレッシュ?などでしょうか・・?

お知恵をお貸しくださいよろしくお願いします

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

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

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

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

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

guest

回答2

0

あるウェブサイトにアクセスを行うphpのバッチ

とのことですから、おおかた、「クローラー」とか「スクレイピング」の類のプログラムですかね。
バッチで動作させているということですから、Cookie は無関係ですね。プログラム内でリクエストヘッダにCookie情報を付加してリクエストしているのであれば、その限りではありませんが。

相手方のサイトがスクレイピングされるの嫌!ってことで、アクセス拒否されているのではありませんか?
そうだとしたら、拒否するのが目的だから、「どうやって拒否している」かというヒントにつながるような、エラーメッセージは出鱈目であるはずです。

投稿2015/10/30 09:59

編集2015/10/30 10:04
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

外しているかもしれませんが、エラーメッセージと長時間起動しているという状況から、cookieが溜まってしまっていることが原因のように思われます。

PHPでのHTTPアクセスはどのような関数(ライブラリ)を利用されていますか?
その関数(またはライブラリ)でのcookieのクリアを行うことで改善できそうです。

投稿2015/10/30 01:39

takyafumin

総合スコア2335

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

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

curekaishine

2015/10/30 09:54

goutteを使用しています クッキーに関しての関数などあるものでしょうか・・?
takyafumin

2015/10/30 13:37

自サイトへのバッチ処理かと勘違いしていました。 Kosuke_Shibuyaさまの言うようにスクレイピング処理のようですね。 ですので、クッキーの件は見当違いです。すみません。 他サイトへのアクセスの場合、どの程度のアクセスが許容されるのか直接確認されるのも良いかもしれません。 脅すわけではないのですが、スクレイピングの頻度を調べていたところ、以下のような過去の事件の記事が出てきましたので。 http://librahack.jp/ 過去の事件であり、現在一般的にどの程度許容されるのかは判断がつきませんでした。
退会済みユーザー

退会済みユーザー

2015/10/30 13:47

かの有名なあの事件ですね。本人のブログがあったんですね。 それは知らなかった…。 「スクレイピング」関連の質問は頻出ですけど、 当人の方々は、はたしてそれなりの作法でやっているのかと… いつも気になりますw。回答する側は善意の第三者でいれば関係ないことですが…
takyafumin

2015/10/30 15:43

>Kosuke_Shibuyaさま そうなんですよね、少し気になったので記載しました。 >curekaishineさま もしご存知でないようであれば、ご一読をお勧めいたします。
退会済みユーザー

退会済みユーザー

2015/10/30 21:27

> takyafumin さま 例の事件では、「起訴猶予」ということで、罪には問われなかったようですし、プログラム上も大量アクセスは行わない配慮がされていたようですが…。 Q&Aサイトでよく見かけるソースコード…これマズイんじゃないの?ってものも見かけますよね… 個人的に「スクレイピング」自体、性に合わないし、相手サイトのコンディション次第で、動きが変わるというのは、プログラムとして気持ち悪いw
curekaishine

2015/11/02 13:41

urlみてみました なんとそろしい・・自社として数年実績はあるので大丈夫だとおもいますが・・ こういう話はいやですね そして質問の問題はいまだ解消できず・・ httpレンスポンスとかのほうにログあたりを仕込んでみるべきでしょうか・・
takyafumin

2015/11/02 15:32

スクレイピングを相手サーバに拒否されているのであれば、Kosuke_Shibuyaさまの回答にあるように、エラーメッセージから事象を正確に把握するのは困難かもしれません。 切り分けとしては、ローカルにスクレイピンヌ用のテストサーバを建て、そこに対して同じようにスクレイピングを行い、再現性を見るのが良いかと思います。 再現するようであれば、php側で長時間処理すると問題が出るコーディング(オブジェクトの開放など)がある可能性が高いです。 再現しないようであれば、相手側に拒否されている可能性が高いので、相手側と相談するのが解決の近道かと思います。
curekaishine

2015/11/04 11:15

cookie吹き飛ばす処理で問題なさそうな感じでした >>エラーメッセージから事象を正確に把握するのは困難かもしれません。 >>相手側に拒否されている可能性が高いので、相手側と相談するのが解決の近道かと思います。 今後はこのへんも視野に入れるべきですね 参考になる回答ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問