google. search by image

52 views
Skip to first unread message

youly Liu

unread,
Jun 30, 2011, 1:45:52 AM6/30/11
to lzuitslab
google最近推出通过图片进行搜索的功能,最近研究了一番。有几个问题请教大家:

url形式随便拿一个说:

 http://www.google.com.hk/search?tbs=sbi:AMhZZisnF0Z2YxkzfjUpNelaylPosiNa9Q37xqypFIOUojwo8Bi86X57Fk91lARk0bLz8I3_1hh-YViMtPErZAOZlyOwBav5_1qRnXJLVcm_1AjZ5PJA3Yoc2iBCsQ9PwdCGYbylVqkwWEzV6ndWaM_1x-JacqYv436lE_1ImAPLlnV_1ViOB3DoezEbLq4hPrZ0wCvVu3nIxil-yyRHdtTyhi2YFb_1Bjqo3kBjHqb4KikrcCY9kqsL_1c3_1AZFBnXFwhQ9Vxh28tmUoti0ri-BsZgZND40mfuK7pTnwlLW3ByH6YMzvoEPQRVW-KDGXiWSi6NvHN_1iV4TI9e33WkqDmyFrBMvo_1NqPvZJ5YSi2MhlHLo8DnotsSkvcdpNS5TJ7t0-1YZgRBcI2OMmBtzuHnx7nXmGKlcLhUo2W0COU0YJjDWyBHR78HtwgJfexn2CDMX8MsxYenUUQajpre8KnPWWoy-La74QHdhj4DbCivMb1ESo08OqnaGuGrQ8TLhCvzE_1edf0276_19AO3D2Uk4ipFZIip0TnVD5NulfPsC3AEY7zkApkwoOp62JKJPh9Etn5sQQlYCNm53xsXgXb0kxTYj_1y96GnyrYIQDZeWSkB6KUbfazh79ARbdVJ8bJJ6orsAq3tzbR8QYBXmB7NoNwsxrXO4J6f2kUMNbPR13fM4d_1ArY-XOWdQaucS5HJIhmHC39btApZU1Umrt2mcpnb0smXMlHI10x1D8--3YSybL2R9P24rSBLGTbUMLRQcw2OFCr-U3wBENZnWb6HTDUu_1aL-763cKKZMmrJvXj4k1GjEjOIpyxoAFff2G4GIYOHjVxnQ6oonjokPAEgoDWkRUj2V_1PwibwbWuWVcyNHUY87fSZeVsH-2YLc0weSz4eEl5G5MiM5fJ0l2VQsucwt8n21LrSbjrlytbOlJ4lUtZhSP3MMpuG8njxENCAM-z3C8vsIF3GmdoAJGbR6fh2YiVi--aJ8a1ZJ_1KvPW4pfbNt8IaRS04F74Iw4tmzCciT49f80A_1wy35IaFg3kkkD8ZO71UfeUPB3oSCZf5A-roEds3cx8u1bbNF-Nb6OYm6LCLVK_1Ngunke52mH0-JEqApK2WFdrB8zIdQXyMoBPUd0gKsYv4iNsUJ87mfAw17k9ekW8wwWVFWqWjIJal0yjEddci3fr4igGk4f01M7IZ4Pp_1ZOwB6RvSZErbWAP-kU6FpkOlBmTmxWZGGsXHK3HROBaydfPhbaOH2130ha11rOxR_1vXo6j2bCHKdLlhFT7S1uWtXREJ-gqPY8Yiij70M2kBhs10BPBbhU7bhUA&um=1&hl=zh-CN&newwindow=1&safe=strict&sa=N&rlz=1C1GGGE_zh-CNCN413CN413&biw=1366&bih=704

1、其中的 tbs=sbi:是指什么?上面红色的字符串是什么数据格式?查了半天,还是没搞懂。

2、发送的url请求是在浏览器端处理的还是服务器端处理的?看了他的网页源代码,tai复杂了.

3、如果是在服务器端,那么直接在浏览器地址栏输入url,url形式应该是怎样的?

4、如果是在浏览器,那么相应的函数是不是公开的呢?我也没有查到。


求指教。谢谢

kang kang

unread,
Jun 30, 2011, 2:50:01 AM6/30/11
to lzui...@googlegroups.com


2011/6/30 youly Liu <youl...@gmail.com>
应该是一个hash值吧
大多肯定是服务器端处理的
这个值应该是把图片传到服务器端之后,服务器处理之后的一个结果

youly Liu

unread,
Jun 30, 2011, 5:39:17 AM6/30/11
to lzui...@googlegroups.com


应该是一个hash值吧
大多肯定是服务器端处理的
这个值应该是把图片传到服务器端之后,服务器处理之后的一个结果


  像谷歌的自定义搜索,url参数我们都可以确定,也就是说我们想搜某个关键词,可以直接在浏览器地址栏输入关键词和相关参数,不用通过表单。
  
  现在如果我有一个图片的url,怎样才能做到不用google的表单或拖动呢?

  常规的搜索字符串是不是不经过处理而直接作为参数传递给相关的搜索算法,而图片搜索需经过另外的特殊算法处理,获得你所说的那个hash值,然后作为参数传递给相关的搜索算法。如果是这样,那么我所说的直接在浏览器地址栏输入关键词和相关参数,不用通过表单而获得搜索结果是不是做不到?

kang kang

unread,
Jun 30, 2011, 5:47:52 AM6/30/11
to lzui...@googlegroups.com
google如果不提供api的话,那模拟个请求就是了。

2011/6/30 youly Liu <youl...@gmail.com>

Loong Tan

unread,
Jun 30, 2011, 8:10:55 PM6/30/11
to lzui...@googlegroups.com
google图片搜索有api


-----------------
Best Regards


 


2011/6/30 kang kang <kangka...@gmail.com>

youly Liu

unread,
Jun 30, 2011, 11:23:47 PM6/30/11
to lzui...@googlegroups.com

己经被弃用了,不知道何时关闭。

在 2011-7-1 上午8:11,"Loong Tan" <ysj...@gmail.com>编写:

google图片搜索有api


-----------------
Best Regards




 


2011/6/30 kang kang <kangka...@gmail.com>
>
> google如果不提供api的话,那模拟个请求就是了。
>

> 2011/6/30 yo...

Loong Tan

unread,
Jul 1, 2011, 5:21:47 AM7/1/11
to lzui...@googlegroups.com
那就模拟post吧。。。

2011/7/1 youly Liu <youl...@gmail.com>



--
-----------------
Best Regards


 

youly Liu

unread,
Jul 1, 2011, 10:25:47 AM7/1/11
to lzui...@googlegroups.com
pc上可以模拟,而且都是正常的,但是在手机上,一般的带post请求的网址也都可以,唯有google的search by image 不行,自动跳转到图片搜索首页(再次说明电脑上是可以的),我就觉得奇怪了。难道是浏览器在搞鬼,不接受那么长的网址?android系统自带google的浏览器啊!

youly Liu

unread,
Jul 1, 2011, 10:37:48 AM7/1/11
to lzui...@googlegroups.com
看了地址栏,上面地网址也是就是我所模拟的,但是显示的内容始终是图片搜索的首页!

Loong Tan

unread,
Jul 2, 2011, 8:34:25 AM7/2/11
to lzui...@googlegroups.com
用浏览器模拟???什么意思?
-----------------
Best Regards


 


2011/7/1 youly Liu <youl...@gmail.com>

youly Liu

unread,
Jul 2, 2011, 12:04:03 PM7/2/11
to lzui...@googlegroups.com
程序的代码是:
        WebView wb;
        wb=(WebView)findViewById(R.id.webview);
        wb.getSettings().setJavaScriptEnabled(true);
        String url="http://google.com/?hl=zh_CN";
        wb.loadUrl(url);

WebView 为android中的一个控件,有浏览器的作用。load() 方法加载url所指向的网页。
上面的url是有作用的,已换成图片搜索的就不行了。

youly Liu

unread,
Jul 2, 2011, 12:15:40 PM7/2/11
to lzui...@googlegroups.com
这个问题很特殊,可能是google的问题,暂时不想别人利用他的算法做一些开发。因为他有声称不久会把search by image 移植到android。
哎,再观察观察。

Loong Tan

unread,
Jul 2, 2011, 10:55:01 PM7/2/11
to lzui...@googlegroups.com

youly Liu

unread,
Jul 3, 2011, 1:15:46 AM7/3/11
to lzui...@googlegroups.com
这种方式对于获取一般的数据当然可以,我的想法是通过手机拍摄一幅图片,然后上传到一个可以被访问的服务器以获得一个url,然后启动一个新的activitity,把url传送给google服务器,以显示google搜索后的结果,这样就略去了自己去处理数据的麻烦,当然前提是能得到像json,xml那种格式的数据。我先试试。谢了。

Loong Tan

unread,
Jul 3, 2011, 2:49:46 AM7/3/11
to lzui...@googlegroups.com
这个 方法 也是可以实现的啊。。。跟服务器端的通信实质上还是post跟get。。。好好构造嘛。多抓包看看。

youly Liu

unread,
Jul 3, 2011, 3:50:07 AM7/3/11
to lzui...@googlegroups.com

所以我才质疑为什么google的api shutdown 之后为什么基于Google 的服务 的程序用不了,是不是没有API 程序就开发不了了呢。

在 2011-7-3 下午2:50,"Loong Tan" <ysj...@gmail.com>编写:



这个 方法 也是可以实现的啊。。。跟服务器端的通信实质上还是post跟get。。。好好构造嘛。多抓包看看。


-----------------
Best Regards


 


2011/7/3 youly Liu <youl...@gmail.com>
>

> 这种方式对于获取一般的数据当然可以,...

Loong Tan

unread,
Jul 3, 2011, 10:07:27 PM7/3/11
to lzui...@googlegroups.com
你还是没有理解上面两种方法,只要服务能访问,不开放api,你伪造正常访问的数据包就可以了啊。。。为什么一定要api了。

youly Liu

unread,
Jul 4, 2011, 6:06:12 AM7/4/11
to lzui...@googlegroups.com
还是那个问题,获取的是google首页,怎么办呐、、

用POST方式,HTTP/1.1 405 Method NOT Allowed. 于是用GET,得到响应。

我的代码(红色是关键部分):
        // TODO Auto-generated method stub 
        
       //你可以把这个url复制到pc浏览器地址栏,就是搜索后的结果。
        HttpGet httpRequest = new HttpGet(uriAPI); 
        try 
        { 
         
          HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest); 
         
          if(httpResponse.getStatusLine().getStatusCode() == 200)  
          { 
            
            String strResult = EntityUtils.toString(httpResponse.getEntity());
            mTextView1.setText("this is a get"); 
           
            WebView wb;
            wb=(WebView)findViewById(R.id.webview);
            wb.getSettings().setJavaScriptEnabled(true);
            wb.loadDataWithBaseURL("",strResult, "text/html", "UTF-8",""); //显示html,测试结果显示的是google首页。
            
            Toast.makeText(getBaseContext(), uriAPI, Toast.LENGTH_LONG).show();


            try{

              File myFile = new File("/sdcard/google.html"); 
              myFile.createNewFile(); 
              FileOutputStream fOut =  new FileOutputStream(myFile); 
              fOut.write(strResult.getBytes());   
//在这里为了进一步搞清楚数据内容,我把他写到了文件中。文件在附件中,用浏览器打开确实是google首页。问题出在哪啊?
              fOut.flush(); 
              fOut.close();

            }catch(Exception e){

            e.printStackTrace(System.err);
            Toast.makeText(getBaseContext(), "write error", Toast.LENGTH_LONG).show();

            }
          } 
          else 
          { 
            mTextView1.setText("Error Response: "+httpResponse.getStatusLine().toString()); 
          } 
        } 
        catch (ClientProtocolException e) 
        {  
          mTextView1.setText(e.getMessage().toString()); 
          e.printStackTrace(); 
        } 
        catch (IOException e) 
        {  
          mTextView1.setText(e.getMessage().toString()); 
          e.printStackTrace(); 
        } 
        catch (Exception e) 
        {  
          mTextView1.setText(e.getMessage().toString()); 
          e.printStackTrace();  
        }  
      } 


悲催啊!!

2011/7/4 Loong Tan <ysj...@gmail.com>
google.html

Loong Tan

unread,
Jul 4, 2011, 8:00:13 AM7/4/11
to lzui...@googlegroups.com
user-agent?
-----------------
Best Regards


 


2011/7/4 youly Liu <youl...@gmail.com>

youly Liu

unread,
Jul 4, 2011, 8:44:56 AM7/4/11
to lzui...@googlegroups.com
么意思?google设置了权限?

2011/7/4 Loong Tan <ysj...@gmail.com>

Loong Tan

unread,
Jul 4, 2011, 9:33:34 AM7/4/11
to lzui...@googlegroups.com
猜测的,google也许会根据用户发送的user-agent把你重定向不同的页面。你看看是不是这个原因。
用firebug抓包看看整个过程嘛。

以前遇到过类似的
Reply all
Reply to author
Forward
0 new messages