私は Delphi を使用しており、Web ページからソースを取得しようとしています。
私の問題は、IE や Google Chrome の代わりに Indy (idHttp) または Clever Components (clHttp) を使用すると、異なるソースコードを取得することです。
ブラウザで表示されるものとまったく同じ方法で、Delphi を使用して Web ページのソースを取得する方法はありますか?
私は Delphi を使用しており、Web ページからソースを取得しようとしています。
私の問題は、IE や Google Chrome の代わりに Indy (idHttp) または Clever Components (clHttp) を使用すると、異なるソースコードを取得することです。
ブラウザで表示されるものとまったく同じ方法で、Delphi を使用して Web ページのソースを取得する方法はありますか?
これは、コントロールがIEまたはChromeで使用されているものとは異なるユーザーエージェント文字列を送信していることが原因である可能性があります。つまり、サーバーはIEやChromeの場合とは異なるソースを送り返します。
たとえば、TIdDHTTPで、次のように設定します。
Request.Accept=*/*
Request.CacheControl=no-cache
Request.Connection=Keep-Alive
Request.ContentType=application/x-www-form-urlencoded
Request.AcceptEncoding=gzip, deflate
Request.UserAgent=Mozilla/4.0 (compatible; MSIE 6.0; Win32)
Request.Host=(web site name)
基本的に、コンポーネントからページをリクエストすることは、ブラウザが行うことと同じです。ブラウザだけが、さらにいくつかのリクエストやその他のアクティビティを実行する場合があります。DOM を変更する可能性のある JavaScript。
JavaScript をオフにして、もう一度比較してみてください。Chrome 開発者ツールに精通している場合は、最初の HTTP get からの生の入力を確認して比較してください。それでも異なる場合は、リクエストを変更して chrome リクエストと同じにします。