【问题标题】:How can I make a bash script for reverse searching an identical image and downloading its greatest resolution?如何制作用于反向搜索相同图像并下载其最高分辨率的 bash 脚本?
【发布时间】:2026-02-05 01:55:02
【问题描述】:

我知道仅使用 bash 脚本无法做到这一点,或者据我所知(我仍在学习)。这就是我寻求帮助的原因。我还需要什么?有具体的工具吗?

这是我想做的:

  1. 上传图片到https://www.google.com/searchbyimage/upload
  2. 然后找到所有相同的图像
  3. 下载分辨率最高的那个

到目前为止,我已经能够通过 curl 将图像上传到 Searchbyimage。然后,这个上传的图片会创建一个很长的令牌,用于搜索相似的图片,并带有一些补充关键字。

上传的图片会创建一个链接,如下所示:

https://www.google.com/search?tbs=sbi:

在此是相当长的令牌: AMhZZith3JfR2OzwmuyQjufBifvdFWNjMShRMypWIE2-g005QfYLeTATLhGHAWz8MLI-tbgHzZp-bREPlJbsNWhY7U4Z2_19bu0oHII6VJPIVVJSPANODqnrJXp6X5VKKoXHMLcBCmI9eIpxS_1EX9g9YJPFL2XFEfJqIApLX83erP5mlRM7rSiIF5Te_1RPNyVkp4IPZPBRtoOKGhpDw2xad-JZsqd2ai4F5sMvyO2A_18PMFKg21nTRH_1jVeOeUhz8U5zkL4lycIg3kafAYlNy8YwmjSFcmc2nZB_10t9MFyi2BnBmemDRp4DCACI0FVM6pLTIB8VCBpU9A EM>

并在末尾添加:&hl=fr

最后搜索图像,我可以选择单击“相似图像”或“所有尺寸”(这是我想要的“所有尺寸”,因为相似图像并不能确保它是相同的)。这将添加一些来自 google 对图片的分析(这里是 Émile Zola 的照片)的关键字并创建第二个标记:

The picture I searched here

https://www.google.com/search?safe=strict&hl=fr&

q=emile+zola&tbm=isch

&tbs=simg:

CAQSmQEJthA57uIOXdcajQELEKjU2AQaBggXCD0IQgwLELCMpwgaYgpgCAMSKLQZ9QH3BLMZ2A6xGdcO3w70Ad0OwjrEOqEuwzqiLsE67iSTLoM4oC4aMIk1iw7XQn7Wu55hLB2k-bnfW3_1yf24eA0N-W-baKvWkDj48J67yZZS-UQ-BgjCRQyAEDAsQjq7-CBoKCggIARIEnfZWUgw&SA = X&VED = 0ahUKEwi965ashtrhAhWI3eAKHSmRCBwQ2A4IKygB EM>

&biw=1920&bih=944

最后是图片的分辨率。这个想法是重新创建第二个链接,然后下载谷歌找到的最高分辨率的图像。我必须得到令牌,但其他所有内容都可以在图片文件本身上找到:该文件以图片正确命名,因此可以作为关键字,并且它的分辨率也很容易知道。我想让它成为一个脚本,以下载许多画作的更高分辨率图像 - 超过一千 - 质量低下。理想情况下,我会经常使用它。到目前为止,我已经找到了如何使用 curl 上传图片,它给了我一个令牌,但不完整。除此之外,我完全迷失了。

理论上这似乎不是不可能的。问题是我太新手了:到目前为止我很喜欢 Linux 和 bash,但我知道的很少。当然,我之前已经做了几个小时的谷歌搜索,但没有发现我知道我可以使用的东西。在 github 上也没有任何相似之处:许多搜索相似图像的脚本,但没有一个相同的。他们都没有比较这些图像的大小。还有一个用于反向图像搜索的python API,但它似乎无法搜索相同的图像,并且似乎与google API有关,这是有问题的。所有这一切对我来说可能都很难,因为我只是一个初学者,而且我对构建这个脚本的了解还不够:但从另一方面来说——也许是因为我缺乏知识——这似乎根本不是不可能的,而且我很愿意尝试,失败,再试一次:学习。所以我在这里,问:我该怎么做?只能在 bash 中完成吗?如果没有,我必须包括什么?还是做不到?

最后,我知道有一个用于反向图像搜索的谷歌 API。如果不限于每天搜索一百张图片,那将非常有用:如果您想要更多,您必须付费。每天 100 张图像,我需要大约 11 天的时间才能以更好的质量反向搜索所有我想要的图像:最后,我会通过自己手动搜索所有图像以同样快的速度完成。但这些选项似乎都不是解决方案:而且这个脚本似乎也不是不可能的。这只是超出了我目前的能力。

提前谢谢你,如果有人有想法!

PS:我可以通过 WSL 或虚拟机使用 linux。到目前为止,两者都工作得很好,包括任何命令或包。 WSL 快得多。对不起我的英语,我是法国人!

第二个 PS:我被要求展示我所拥有的代码,但这并没有超出这个范围:

curl -i -F sch=sch -F encoded_image=@path/to/my/imagefile.jpg https://www.google.com/searchbyimage/upload

这是我在这里找到的问题的部分答案: How to use google search by image in curl

【问题讨论】:

  • 如果您的某些部分正常工作,请显示您目前拥有的代码。
  • 一般来说,一个好的 SO 问题是关于您在编写软件的过程中遇到的一个非常具体和狭窄的技术问题,与该狭窄问题无关的所有内容都被排除在外(如 @987654326 中所述@ 定义)。因此,“我如何实现更大的目标?”式的问题通常适用于过于宽泛的范围。

标签: python bash google-image-search


【解决方案1】:

有两种以编程方式使用网络的基本方法:

  • 通过 API:这是专为计算机访问 Web 资源而构建的,并且始终是首选。您遵循严格的规则并获得明确的结果。
  • 通过爬行:这是计算机伪装成用户,模拟在浏览器中点击链接的行为。基本上是卷曲,但一遍又一遍地存储在其间的状态、正确生成的参数、应用的编码等。

正如您所说,有一个可用的 API,所以如果它可以满足您的需求,那么它就是正确的方法。它做你想做的事,但强制执行限制,这是一个非常有用的迹象,表明你正在尝试做的事情有限制。这些限制将被仔细设置以激励您在其中工作。尝试抓取相同的结果可能会违反 Google 的服务期限限制或您的理智限制。

因此,如果您真的想解决 API 问题,请使用爬虫库,例如 Python Scrapy。但请注意,API 限制可能是一个有用的指标,表明您可以在不付费的情况下获得多远。

【讨论】:

  • 非常感谢您的回答!正如@CharlesDuffy 指出的那样,我的问题也可能太大了。我想我应该考虑使用 API,如果我遇到另一个问题(那么,如果 API 有据可查,就不应该是这种情况)。