何为http auth? http auth是一种基础的用户验证,原理是将用户名:密码base64加密后放在http的请求头部Authorization 发给服务器。 浏览器的做法 当你访问一个需要http auth验证的资源时,web server会去检查你的http请求头并且比对帐号密码,如果不成功就会相应的所请求的资源,否则就会返回401,浏览器在接收到401时会自动打开一个登陆窗口让你登陆,点击提交后会将输入的用户名密码base64加密后放在请求头部再次发送这次请求。 缺点 很明显,如果别人获取了你的http请求内容,将Authorization请求头解密后就能获得帐号密码,所以一般来说,http auth都是基于https的。 为什么会用到 http auth? restful api restful api 的一个特点即无状态,每次对敏感资源的访问都需要进行登陆验证,可以用http auth来很好的开发restful api。 纯js的ajax实现http au 继续阅读 >>


李余通 17/11/27 19:46:29
一些常见的状态码为: 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用 详细分解: 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码。 代码 说明 100 (继续) 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。  101 (切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。 2xx (成功) 表示成功处理了请求的状态代码。 代码 说明 200 (成功) 服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。 201 (已创建) 请求成功并且服务器创建了新的资源。 202 (已接受) 服务器已接受请求,但尚未处理。 203 (非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。 204 (无内容) 服务器成功处理了请求,但没有返回任何内容。 205 (重置内容) 服务器成功处理了请求,但没有返回任何内容。 206 (部分内容) 服务器成功处理了部分 GET 请求。 3xx 继续阅读 >>


楚东方 17/11/26 20:47:01
http状态码 定义:HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码 分类: 1xx: 作为临时的响应,代表请求已经被受理,服务器用来向客户端指定客户端应该有的后续动作。 2xx:请求成功,服务器已经接受并且会处理它 3xx:这类状态码代表需要客户端采取进一步的操作才能完成请求。用于重定向。后续的请求地址(重定向目标)在本次响应的 Location 域中指明。这个我在腾讯云上抓包看见过。但是自己没包装过相关的http包。 4xx:客户端出错,返回大概的可能的出错原因。 5xx:服务器出错,返回出错的原因。 6xx:源站没有返回响应头部,只返回实体内容(这句话是百度的,留个点,日后说不定能遇见这个码) 具体的http码: http码 解释 100 客户端仍应该继续发送剩余请求,所有请求完成后,服务器会给客户端最终响应 101 提醒客户端按照服务器发来的信息改变请求方式 200 继续阅读 >>


朱紫钰 17/08/04 15:48:01
为什么突然想要分析一下GET和POST方法的区别呢,是因为最近在写小组的图书管理系统。这个项目的第一版已经基本写完了,但是仍有一些小bug让我想不明白。比如其中的一个bug: 用户在图书详情页对该图书进行评价,评价成功之后刷新页面,将会在刷新的那一刻再次提交评论内容,刷新多次则会提交多次。 今天不经意间终于搞明白了这个bug,问题就出在这GET和POST上! bug复现 先来看一下评论部分的JSP页面代码: <div> <form action="/addComments.do?bookid=<%=bookid%>" method="post"> <div> <center> <textarea cols="50" rows="5" style="width:300px;" name="detail" placeholder="想说点什么?"></textarea> 继续阅读 >>


祝一迪 17/08/02 16:07:28
1.HTTP代理服务器的工作原理 在HTTP通信链上,客户端和目标服务器之间通常存在某些中转代理服务器,它们提供对目标资源的中转访问。一个HTTP请求可能被多个代理服务器转发,后面的服务器称为前面服务器的上游服务器。代理服务器按照其使用方式和作用,分为正向代理服务器、反向代理服务器、透明代理服务器。 正向代理服务器:要求客户端自己设置代理服务器的地址。客户的每次请求都将直接发送到该代理服务器,并由代理服务器来请求目标资源。比如处于防火墙内的局域网机器要访问Internet,或者要访问一些被屏蔽掉的国外网站,就需要使用正向代理服务器。 反向代理服务器:被设置在服务器端,因而客户端无须进行任何设置。反向代理服务器来接收Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从内部服务器上得到的结果返回给客户端。在这种情况下,代理服务器对外就表现为一个真实的服务器。 透明代理:只能设置在网关上。用户访问Internet的数据报必然都经过网关,如果在网关上设置代理,则该代理对用户来说 继续阅读 >>


闫钰晨 17/07/26 21:25:03
平常我们在浏览网页的时候,会有一些网站要求我们进行登录,当我们成功登录之后,会发现我们所浏览的所有相关网页都不再需要我们重新登录,这是为什么呢。还有当我们在电商平台进行购物的时候,我们虽然是在同一家电商平台进行购物,但是我们明明是在不同的页面进行的添加购物车的选项,为什么最后我们可以在购物车中找到我们所添加的所有商品呢。其实,这些都是我们在Web后台方面使用了Cookie技术。 Cookie简介 Cookie定义:Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。 session:会话,指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到关闭浏览器所经过的这段时间,也就是用户浏览这个网站所花费的时间。(摘自百度百科) 实现思想 如何让网站记住我们,乃至记住我们之前做过的事情,我们可以联想,如果让服务器在我们进行此次请求的时候,可 继续阅读 >>


董恒毅 17/06/04 00:17:32
在前几篇博客中,一直讲的是使用HttpClient进行请求操作,并判断请求是否成功,但既然做网络爬虫,我们就需要将整个页面的Html拿下来进行分析,这时候就要用到HttpClient的返回实体的内容,然后使用Jsoup进行解析。 HttpClient返回实体内容 import org.apache.http.Header; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import ja 继续阅读 >>


董恒毅 17/03/28 19:37:26
在网络爬虫中我们经常需要设置一些头部信息,是我们进行网页抓取的行为更加像浏览器的行为,并且我们有时需要将头部信息设置正确,才能得到正确的数据,要不然有可能得到和浏览器所展示的页面有出入的信息。 设置头部还可以进行模拟登录,我们可以设置cookie,来得到登录后的页面,有些时候一些网站需要进行登录才能进行一些操作,并且有可能登录后的网站和没有进行登录的所产生的数据有所不同,这个时候我们就有必要添加头部cookie,进行模拟登录了。 设置头部进行模拟登录 代码如下: import org.apache.http.Header; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpCli 继续阅读 >>


董恒毅 17/03/26 23:44:56
觉得自己是时候该沉淀了。。。说起来,自学Java网络爬虫也有两个月了,期间走了很多弯路,我也不仅对Java和Python这两们同样都能搞爬虫的语言但与之相关的文档与书籍的差别感到惊讶,对于Java来说,目前我知道的有关介绍Java网络爬虫这方面的书籍只有《自己动手写网络爬虫》,对于其中的内容,我觉得是晦涩难懂,不适合入门,并且内容相对来说感觉有点过时,我觉得我必须开个博客专栏,对于之后想要入门Java网络爬虫的兄弟姐妹们,好减少一点他们在学习途中的迷茫,我期间是迷茫了好几次,但最终还是坚持下来了。对于Java和Python来说,很多人刚开始都不知道该选择哪门语言,在此我也不多做评价,有需要的请百度,或知乎。我选择Java的原因有两个,其一我正在学习Java语言,想将它运用的熟练一点,其二,他可以做大数据处理~~ 好了,不扯了,直接给兄弟姐们上干货。(本专栏基本可以入门Java网络爬虫,对于一般性网络爬虫的需求是足够了,我也还在学习之中~~) 请求URL返回响应 在这里我先说一下,对于一般需求性的网络爬虫来说,使用HttpClient请求页面,使用 继续阅读 >>


董恒毅 17/03/26 21:55:26
HTTP+ 加密 + 认证 + 完整性保护 =HTTPS HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用 SSL(Secure SocketLayer)和 TLS(Transport Layer Security)协议代替而已。 HTTP 主要有这些不足,例举如下 通信使用明文(不加密),内容可能会被窃听 不验证通信方的身份,因此有可能遭遇伪装 无法证明报文的完整性,所以有可能已遭篡改 TCP/IP是可以被窃听的网络,按 TCP/IP 协议族的工作机制,通信内容在所有的通信线路上都有可能遭到窥视,所以要通过加密来防止窃听。 通信的加密:通过和SSL或TSL的组合使用,加密HTTP的通信内容,与SSL组合使用的HTTP称为HTTPS。 内容加密:对报文主体加密后发送,客户端服务器必须同时具有加密解密过程。 至于通信双方的身份信息,在SSL中存在一个被称为证书的手段,只要确认对方的证书,伪装身份的危险大大减小。 公开密钥加密使用一对非对称的密钥。一 继续阅读 >>


卢晓丹 16/12/31 22:10:54