Java 如何为特定类型的文件/响应筛选URL?

Java 如何为特定类型的文件/响应筛选URL?,java,file,url,download,web-scraping,Java,File,Url,Download,Web Scraping,我有一个网页,上面有指向可下载文件的链接。例如: 但它也可以有如下导航链接: 如何确定URL是否指向第一个链接中的文件?或者反过来,过滤掉不合适的URL?继续你编辑的问题:如果你想过滤掉文件 筛选内容类型标题 您可以检查响应头以确定响应是否符合,例如符合应用程序/pdf,但您不能仅从URL/URI本身进行此确定 事实上,我可以构建一个响应URL的web应用程序http://myapp.com/test.pdf 标题内容类型:图像/jpeg和JPG的数据 此外,我还可以发送一个标题内容类型:ima

我有一个网页,上面有指向可下载文件的链接。例如:

但它也可以有如下导航链接:


如何确定URL是否指向第一个链接中的文件?或者反过来,过滤掉不合适的URL?

继续你编辑的问题:如果你想过滤掉文件

筛选内容类型标题

您可以检查响应头以确定响应是否符合,例如符合应用程序/pdf,但您不能仅从URL/URI本身进行此确定

事实上,我可以构建一个响应URL的web应用程序http://myapp.com/test.pdf 标题内容类型:图像/jpeg和JPG的数据

此外,我还可以发送一个标题内容类型:image/jpeg和PDF格式的数据

假设它不是我上面提到的故意破坏的,那么你可以信赖这个响应


请注意,如果内容本身偏离内容类型标题,则可能会发生漏洞攻击。这就是iPhone越狱的方式:通过处理格式错误的PDF数据。

继续你编辑的问题:如果你想过滤掉文件

筛选内容类型标题

您可以检查响应头以确定响应是否符合,例如符合应用程序/pdf,但您不能仅从URL/URI本身进行此确定

事实上,我可以构建一个响应URL的web应用程序http://myapp.com/test.pdf 标题内容类型:图像/jpeg和JPG的数据

此外,我还可以发送一个标题内容类型:image/jpeg和PDF格式的数据

假设它不是我上面提到的故意破坏的,那么你可以信赖这个响应


请注意,如果内容本身偏离内容类型标题,则可能会发生漏洞攻击。这就是iPhone越狱的方式:通过处理格式错误的PDF数据。

查找类似参数的文件名

任何URL都可以在请求时用文件响应


在您请求URL之前,您无法知道URL将响应什么。

查找类似参数的文件名

任何URL都可以在请求时用文件响应


在您请求URL之前,您无法知道URL将响应什么。

在HTTP中,URL永远不会指向文件;它们标识资源,当您取消引用该URL(即发出get请求)时,您将获得该资源的表示

用户代理是否选择将该表示存储为文件是其自己的选择。如何处理表示取决于内容类型

您可以使用HEAD请求获取内容类型。PDF文档应该使用application/PDF,但还有许多其他类型。默认情况下,大多数浏览器倾向于将应用程序/八位字节流保存为文件。内容类型协商也有一些微妙之处

在Java中,您可以使用以下内容发出HEAD请求:

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("HEAD");
// Check connection.getContentType();

在HTTP中,URL永远不会指向文件;它们标识资源,当您取消引用该URL(即发出get请求)时,您将获得该资源的表示

用户代理是否选择将该表示存储为文件是其自己的选择。如何处理表示取决于内容类型

您可以使用HEAD请求获取内容类型。PDF文档应该使用application/PDF,但还有许多其他类型。默认情况下,大多数浏览器倾向于将应用程序/八位字节流保存为文件。内容类型协商也有一些微妙之处

在Java中,您可以使用以下内容发出HEAD请求:

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("HEAD");
// Check connection.getContentType();

它不总是以文件响应吗?HTML页面也是一个文件,我感觉答案会朝这个方向发展。让我重新表述一下。我怎样才能下载PDF,TXT,DOC。。。过滤掉PHP、HTML和ASP?@Hashmush不,它可以用动态构造的字节流、数据库中的数据或任何东西来响应。@DaveNewton是的,但也可以解释为文件。浏览器/客户端不知道它是动态生成的。@哈希正确,它不-它不响应文件,它响应字节流。这些字节可能来自一个文件,也可能看起来像一个文件。但是不,它没有任何特定于文件的内容,它也不总是以文件响应,这就是您所说的:它不总是以文件响应吗?HTML页面也是一个文件,我感觉答案会朝这个方向发展。让我重新表述一下。我怎样才能下载PDF,TXT,DOC。。。过滤掉PHP、HTML和ASP?@Hashmush不,它可以用动态构造的字节流、数据库中的数据或任何东西来响应。@DaveNewton是的,但也可以解释为文件。浏览器/客户端不知道它是动态的

“逻辑生成”。@Hashmush正确,它不-它不响应文件,它响应字节流。这些字节可能来自一个文件,也可能看起来像一个文件。但是没有,它没有特定于文件的内容,而且它也不总是以文件响应,这就是您所说的:谢谢您的编辑。问题已更新。是的,问题应该是关于下载文件和过滤网页。内容类型是最好的选择吗?从你所说的来看,它似乎可以被操纵。此外,如果主机支持,我可以检查文件大小,并在下载后运行魔法字节检查。您认为呢?漏洞利用与错误的内容类型没有多大关系,而是与该内容类型的处理程序的漏洞有关。此外,您不能信任.php URL返回文本/html内容。如果脚本处理图像输出(如页面上的JS图形),它可能会返回image/jpeg。类似地,URL或链接http://mysite.com/dough/ 可能返回文本/html内容类型。即使我们重定向或解析到另一个URL,如http://mysite.com/dough/index.asp@NewAlexandria,实际上情况正好相反,如果您担心攻击,您应该避免内容嗅探,并仅根据内容类型将响应发送给处理程序,请参见示例。感谢您的编辑。问题已更新。是的,问题应该是关于下载文件和过滤网页。内容类型是最好的选择吗?从你所说的来看,它似乎可以被操纵。此外,如果主机支持,我可以检查文件大小,并在下载后运行魔法字节检查。您认为呢?漏洞利用与错误的内容类型没有多大关系,而是与该内容类型的处理程序的漏洞有关。此外,您不能信任.php URL返回文本/html内容。如果脚本处理图像输出(如页面上的JS图形),它可能会返回image/jpeg。类似地,URL或链接http://mysite.com/dough/ 可能返回文本/html内容类型。即使我们重定向或解析到另一个URL,如http://mysite.com/dough/index.asp@NewAlexandria,实际上情况正好相反,如果您担心攻击,您应该避免内容嗅探,并仅根据内容类型将响应发送给处理程序,请参见示例。@NewAlexandria接受了您的编辑。一切都很好。我有一些代码可以下载,并将合并过滤文件的建议:太好了。如果你能给我们中至少一个正确的解决方案,那就好了。谢谢你的回复。@NewAlexandria接受了你的编辑。一切都很好。我有一些代码可以下载,并将合并过滤文件的建议:太好了。如果你能给我们中至少一个正确的解决方案,那就好了。谢谢你的回复。