为什么我的代码返回403禁止访问

时间:2014-02-02 06:16:55

标签: java http http-status-code-403

我正在尝试使用java创建一个http get请求,当我执行代码时,我得到了403 forbidden代码。有没有办法摆脱它?我的代码是< / p>

 import java.io.BufferedReader;
 import java.io.InputStreamReader;
 import java.net.*;


public class Http {
private final String USER_AGENT = "Mozilla/5.0";
public static void main(String [] args){

    Http http=new Http();
    try {
        http.get();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}
private void get() throws Exception{
    URL ob=new URL("http://www.google.com/search?q=vamsi");
    HttpURLConnection con=(HttpURLConnection) ob.openConnection();
    con.setRequestMethod("GET");
    con.setRequestProperty("USER_AGENT", USER_AGENT);
    int responseCode=con.getResponseCode();
    System.out.println("Response code is "+responseCode);
    BufferedReader buf=new BufferedReader(new InputStreamReader(con.getInputStream()));
    String input;
    StringBuffer response =new StringBuffer();
    while((input=buf.readLine())!=null){
        response.append(input);

    }
    buf.close();

    System.out.println(response.toString());
}   


}

2 个答案:

答案 0 :(得分:6)

如果您在API和服务条款之外执行此操作,Google搜索将拒绝您的请求。

$ wget http://www.google.com/search?q=vamsi
Resolving www.google.com (www.google.com)... 74.125.225.212, 74.125.225.210, 74.125.225.211, ...
Connecting to www.google.com (www.google.com)|74.125.225.212|:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2014-02-01 23:21:08 ERROR 403: Forbidden.

他们可能正在查看您的User-Agent标题。如果您添加一个类似于浏览器的浏览器,它可能可以工作,但您正在规避服务条款并寻求不受支持的行为。 (对不起,我也试了一次。)

另见Why does Google Search return HTTP Error 403?

仅供参考,这是主要搜索引擎(Google,Bing,Yahoo)的常见限制。有一些你可以编程查询;你将不得不使用它们。

答案 1 :(得分:0)

这是解决方案:

con.setRequestProperty("User-Agent", USER_AGENT);