工作中发现一个问题。当我用HttpURLConnection去连接读取一个网站时,老是会发生这个403错误。这个引起了IOException,但是我用firefox访问这个网站时就没问题。 google后知道了答案。原来如果用java代码HttpURLConnection去连的话 http header 中的User-Agent就为空,解决方法就是在连接之前先设置这个属性。
URL myUrl = new URL(searchURL);
URLConnection myConn = (HttpURLConnection)myUrl.openConnection();
myConn.setRequestProperty("User-agent","Mozilla/4.0");
BufferedReader br = new BufferedReader(new InputStreamReader(myConn.getInputStream()));
那台Server上要这么做, 可能是要组织一些网络机器人的访问(不过感觉不是很有用,用上面的方法就能破了)。 其实实现感觉也很简单, 加上一个Filter,判断如果request.getHeader("User-agent")为空的话,然后再response一个403 status就行。
分享到:
相关推荐
网页状态码是HTTP协议中用来表示客户端与服务器交互过程中网页状态的数字代码,它们提供了...因此,当遇到网页访问问题时,查看状态码通常是解决问题的第一步。通过学习和实践,你可以更好地应对各种Web开发中的挑战。
在IT领域,尤其是在Java编程中,访问网络、下载文件、实现爬虫功能以及处理超时问题是非常关键的技术点。本文将深入探讨如何在Java中有效处理这些方面的问题,特别是超时处理解决方案,这对于构建高效、稳定的网络...
这种副本可以帮助用户在网页内容发生变化或网站无法访问时,仍能查看到网页的先前状态。多线程实现的页面快照则是在生成这些副本时,利用多线程技术来提高效率,加快处理速度。 IECapt.exe 是一个可能用于生成网页...
这种方法不仅可以用于网站部署前的静态化处理,还可以用于定期更新静态网站的内容,提高网站的访问速度和搜索引擎优化效果。此外,这种方法也为那些希望减少服务器负载、提高网站稳定性的开发者提供了一种有效途径。
这个问题通常发生在浏览器尝试在HTTPS页面上加载HTTP请求的资源时,出于安全考虑,浏览器会阻止这种行为,以保护用户的隐私和数据安全。 描述中提到,当项目从HTTP切换到HTTPS协议后,某些接口触发了“block:mixed-...
10. **异常处理与重试机制**:网络问题、服务器错误等情况时有发生,因此爬虫需要有良好的错误处理和重试机制,确保爬取过程的稳定性。 在学习和实践Java网络爬虫时,了解上述知识点是基础,同时还需要对HTTP协议、...
- **HttpURLConnection-请求访问网站**:通过`HttpURLConnection`可以轻松地访问Web服务,获取JSON或XML格式的数据,这对于实现客户端与服务器之间的数据交换非常有用。 #### SQLite—数据库 - **SQLite-数据库**:...
压缩包中含有多个文档,从了解httpclient到应用。 httpClient 1httpClint ...(1)访问各个节点的方法 Node getParent ():取得父节点 NodeList getChildren ():取得子节点的列表 Node getFirstChild ...
`WebChromeClient`是一个辅助类,它提供了许多回调方法,允许应用程序在某些事件发生时进行干预,例如JavaScript对话框、网站图标、网页进度变化等。 - **应用场景**:当开发者希望自定义处理网页中的JavaScript...
- 使用`HttpURLConnection`或`AsyncTask`进行网络请求:Android客户端通常通过网络API(如`HttpURLConnection`或第三方库如Volley、Retrofit等)来发起HTTP请求,将图片文件上传到服务器。 - 图片文件读取:在...
当Activity的状态发生变化时,系统会调用相应的生命周期回调方法。例如: - `onCreate()`:当Activity首次创建时调用。 - `onStart()`:当Activity变得可见时调用。 - `onResume()`:当Activity准备好与用户交互时...
同时,BroadcastReceiver能监听系统广播,以便在特定事件发生时作出响应。 3. **权限管理**:安全应用往往需要访问敏感信息,如联系人、短信、设备状态等,因此源码中会包含权限声明,并在运行时请求用户的许可。 ...
7. **权限管理**:由于涉及到网络访问和相机使用,开发者必须在AndroidManifest.xml中声明相应的权限,如INTERNET权限和CAMERA权限。 8. **错误处理和调试**:在实际应用中,开发者需要处理可能发生的各种异常情况...
在Android开发中,有时我们需要获取网页的源代码来分析页面结构、抓取数据或实现特定功能。本实例将详细介绍如何在Android应用中访问网页并查看其源码。 首先,为了能够进行网络通信,我们需要在AndroidManifest....
5. **网络通信**:通过使用 HttpURLConnection、OkHttp 或者 Retrofit 等库,开发者可以实现与远程服务器的数据交换。 6. **传感器和定位服务**:Android 设备通常配备有各种传感器,如加速度计、陀螺仪等,通过使用...
此外,使用Android的LiveData或RxJava等响应式编程库,可以实现数据的实时更新,当用户信息或圈子状态发生变化时,界面能自动更新。 总的来说,AndroidGooglePlusDomainAPI是一个集成了Google Plus Domain API的...
4. **BroadcastReceiver**:用于监听系统或应用内发生的广播事件,例如,当手机接收到特定的网络信号时,BroadcastReceiver 可能会被触发。 5. **AndroidManifest.xml**:应用程序的配置文件,声明应用的组件、权限...