0

Googleで検索を実行すると、Android環境でWebブラウザを開発しています.Googleの検索結果リストを取得します。これらの結果の URL は次のようになります。

http://www.google.ca/url?sa=t&source=web&cd=1&ved=0CDUQFjAA&url=http%3A%2F%2Fwww.test.com%2F&ei=yTOhT7yIGcmu6AG29aSfCQ&usg=AFQjCNH21KLjC0CBkjon2DwD_CZ0HAp

この Google の URL から実際のページに移動します: http://www.test.com

Google はそのタイプの URL を使用して、ユーザーがクリックしたリンクを追跡します。しかし、私にとっては実際の URL が必要なので、Google リダイレクト URL (http://www.google.ca/url?sa=) から実際の URL (http://www.test.com) を取得する方法はありますか? t&source=web&cd=1&ved=0CDUQFjAA&url=http%3A%2F%2Fww ... )

長い文字列から URL をサブストリング化し、実際のページの URL を取得するためにいくつかの置換を行いたくありません。Google の URL 構造に依存するため、信頼できる方法ではないためです。未来なので、この場合、私の方法は機能しません...

だから、リダイレクトリンクが私に送ったURLを知る方法があるかどうか知りたい

前もって感謝します。

4

2 に答える 2

2

よく見ると、Google はhttp://www.google.ca/url?xxx=...&yyy=...&url=real_url&zzz=のようなものを返します。つまり、実際の URL は のurlGET パラメータにあります。 Google から返された URL。必要なことは、Google から返された URL を解析することだけです。実際の URL はurl、応答の GET パラメータにあります。その上で行うことを忘れないでくださいurl_decode

もう 1 つの方法は、Google が返す完全な URL を取得し、それに対して HTTP GET を実行することです。301 または 302 リダイレクトを受け取るはずです。その応答から、locationヘッダーの値を読み取ります。これが実際の URL になります。

于 2012-05-02T15:09:27.813 に答える
0

検索結果でウェブサイトの「実際の」URL を使用するだけで、Google が提供するリンクを変更できることに注意してください。

予見可能な将来をカバーする堅牢な方法は次のとおりです。

  1. リンクのドメインに google が含まれているかどうかを確認します。含まれていない場合は、おそらく「実際の」URL です
  2. ドメインにgoogle が含まれている場合。*、GET パラメータから URL を取得し、値をアンエスケープしてから、有効な URL かどうかを確認してください。
  3. すべてが失敗した場合は、必ずリンクを呼び出してlocationヘッダーを確認してください。

何かが失敗したときにログを記録できれば、何がうまくいかなかったのか、その理由を確認できます。

于 2012-05-16T12:11:57.183 に答える