使用 rest-client 文件上传在 Yandex 上进行 Ruby 反向图像搜索
Posted
技术标签:
【中文标题】使用 rest-client 文件上传在 Yandex 上进行 Ruby 反向图像搜索【英文标题】:Ruby reverse image search on Yandex using rest-client file upload 【发布时间】:2021-03-14 01:30:46 【问题描述】:我正在尝试在 ruby 中克隆此堆栈溢出问题的最佳答案
Reverse search an image in Yandex Images using Python
require 'rest-client'
require 'pry'
response = RestClient.post 'https://yandex.com/images/search',
proxy: 'http://1.1.1.1:8080',
params: rpt: 'imageview', format: 'json', request: '"blocks":["block":"b-page_type_search-by-image__link"]',
:upload => File.new("/home/alex/Desktop/yandex_search/t2.jpg", 'rb'),
multipart: true
binding.pry
我无法上传文件。不断得到回应 "Yandex.Images 中空请求的搜索结果"
【问题讨论】:
【参考方案1】:根据 python 实现,参数看起来应该作为查询参数发送。
告诉 RestClient 将其作为查询参数发送的方法是使用 headers 参数中的 params 值。
require 'rest-client'
query_strings = rpt: 'imageview', format: 'json', request: '"blocks":["block":"b-page_type_search-by-image__link"]'
RestClient.proxy = "http://1.1.1.1:8080"
result = RestClient.post(
"https://yandex.com/images/search",
:upfile => File.new("/home/alex/Desktop/yandex_search/t2.jpg", 'rb'),
params: query_strings, multipart: true
)
【讨论】:
这是正确的,只需要将响应本身作为 JSON 获取,它就像 reponse = JSON.parse(result), image_link = response["blocks"][0]["参数"]["url"]以上是关于使用 rest-client 文件上传在 Yandex 上进行 Ruby 反向图像搜索的主要内容,如果未能解决你的问题,请参考以下文章
如何使用基于 HttpClient 和 .net4 的 Rest-client 进行身份验证
我如何处理rest-client 500错误响应并不断在我的循环中抓取?
如何通过命令行使用WisdomTool restclient?