私のクローラーエンジンは、特定の顧客のサイトに問題があるようです。
そのサイトには、次のようなURLへのリダイレクトがあります。
http://example.com/dir/aaa$0081 aaa.php
(URLをエンコードされていないものとして表示します。$ 0081はHEXを使用して表された2バイトです。)
これは、WinInet Windows API呼び出しHttpQueryInfoを使用した後に返されたバッファを検査する場合であるため、この時点で2バイトは実際にはWideCharを表します。
これで、たとえば$ 0081が非視覚的な制御文字であることがわかります。Latin -1Supplement(Unicodeブロック)
問題は、サーバーへの今後のリクエストに「現状のまま」(URLエンコード)のURLを使用すると、400または404で応答することです(一方、完全に削除されている場合は機能し、サーバーは正しいページと応答...)
FireFox / IE/etcだと思います。HTTPリクエストを行う前にURL内の非表示のコントロール文字を削除しています...(少なくともIEHTTPHeadersおよびFF Live HTTPヘッダーアドインは非表示の文字を表示しません。)
誰かがこれの基準を指摘できるかどうか疑問に思いましたか?私が見ることができるものについては、目に見えない文字はURLで見つからないはずなので、解決策は(この場合および将来の場合)これらを削除することであると考えています。しかし、それはネット上で広く議論されているように見えるトピックではありません。