java抓取网页内容(​301redirect:301代表永久性转移(PermanentlyMoved) )

优采云 发布时间: 2022-04-16 10:38

  java抓取网页内容(​301redirect:301代表永久性转移(PermanentlyMoved)

)

  一直对http状态码301和302有一个模糊的认识,在遇到实际问题,看了各种资料后,有了一定的了解。记录在这里,希望能有新的认识。我们都分享。

  官方更简洁的描述:

  ​ 301 重定向:301 代表永久移动

  ​ 302重定向:302代表Temporarily Moved

  ​ ps:这里我还记得两个比较相似的英文单词(permanently,temporary),嘻哈!

  ​ 详细来说,301和302状态码都表示重定向,意思是浏览器在获取到服务器返回的状态码后会自动跳转到新的URL地址,可以从响应的Location头中获取。(用户看到的效果是他输入的地址A瞬间变成了另一个地址B)——这就是他们的共同点。他们的区别是。301表示旧地址A的资源已被永久移除(资源不可访问),搜索引擎在爬取新内容的同时也将旧URL与重定向的URL交换;302表示A的旧地址资源还在(仍然可以访问),这个重定向只是从旧地址A临时跳转到地址B,

  这里开启傻瓜自问自答模式(你可能会想到的问题):

  1、什么是重定向?

  ​ 即地址A跳转到地址B。百度百科的解释:重定向就是通过各种方法将各种网络请求重定向到其他位置(比如网页重定向,域名重定向,路由变化也是路径的一部分)数据包。重定向)。

  2、但是为什么要重定向呢?什么时候需要重定向?

  ​ 想跳就跳,跳得漂亮。或者从维基百科学习:

  1)网站调整(如改变网页目录结构);

  2)网页已移至新地址;

  3)网页的扩展名发生了变化(例如应用程序需要将.php改为.Html或.shtml)。

  ​ 在这种情况下,如果不进行重定向,用户采集夹或搜索引擎数据库中的旧地址只能让访问客户得到404页面错误信息,访问流量将白白流失;网站,还需要重定向访问这些域名的用户自动跳转到主站点等。

  3、那么,你什么时候进行 301 或 302 跳转?

  ​ 当一个网站或网页在24-48小时内临时移动到新位置时,需要进行302跳转。比如我有房子,但最近去亲戚家住。,我两天后回来。使用301跳转的场景是之前的网站由于某种原因需要去掉,然后需要在新的地址访问,是永久的。例如,您的房子实际上是出租的。现在当租约到期时,你在另一个地方找到了房子,而你之前租的房子已经不在了。

  为了清楚和明确:

  使用 301 跳转的场景:

  1)域名到期不想续费(或者找一个更适合网站的域名),想换个域名。

  2)搜索引擎搜索结果中出现不带www的域名,带www的域名却不带收录。这时候可以通过301重定向告诉搜索引擎我们的目标域名在哪里。一。

  3)换空间时,空间服务器不稳定。

  使用 302 跳转的场景:

  ​——尽量使用301跳跃!

  4、为什么要尝试使用301跳转?- URL劫持!

  ​这里摘自百度百科的解释:

  在做从 URL A 到 URL B 的 302 重定向时,主机服务器的隐含含义是 URL A 可能随时改变主意,重新显示自己的内容或重定向到其他地方。大多数情况下,当接收到302重定向时,大部分搜索引擎只需要爬取目标URL,即URL B。如果搜索引擎在遇到302重定向时100%爬取目标URL B,则不需要担心 URL 劫持。问题是有时搜索引擎,尤其是谷歌,并不总是抓取目标 URL。比如有时候A URL很短,但是却做了302重定向到B URL,而B URL是一个长的乱七八糟的URL URL,甚至可能收录一些参数如问号。自然,A URL 更人性化,而 B URL 丑陋且不人性化。Google 很有可能此时仍会显示 URL A。由于搜索引擎排名算法只是一个程序而不是人,因此在遇到302重定向时,它无法像人一样准确地确定哪个URL更合适,从而导致URL劫持的可能性。也就是不法之徒对自己的网址A做了302重定向到你的网址B,不知为何,谷歌搜索结果还是显示了网址A,但是使用的页面内容却是你的网址B上的内容,这这种情况称为 URL 劫持。你辛辛苦苦写出来的内容,刚刚被别人盗用了。由 302 重定向引起的 URL 劫持已经存在了一段时间。但到目前为止,似乎没有更好的解决方案。在正在进行的 Google Big Daddy 数据中心转换中,302重定向问题也是要解决的目标之一。从部分搜索结果来看,URL劫持现象有所改善,但并未彻底解决。

  ​ 我的理解是,当我从网站A(网站比较差)到网站B(搜索排名很高)进行302跳转时,有时搜索引擎会使用网站B 的内容,但是 收录 的地址是 网站A,所以 网站B 在不知不觉中为 网站A 做出贡献,网站A的排名更高。

  301重定向对于搜索引擎来说是一个比较良性的重定向系统,也是搜索引擎可以遇到的重定向系统。它告诉搜索引擎该地址已被弃用,并且将始终转向一个新地址,该地址可以转移新域名的权重。而302重定向很容易被搜索引擎误认为使用多个域名指向同一个网站,那么你的网站就会以“使用重复内容干扰谷歌搜索结果”为由被屏蔽网站排名”。

  ​ 自问自答模式告一段落。这里分享一下我在NodeJs中跳跃的场景:

  ​我们之前做过一个重构项目。由于各种原因,我们的网站的登录和注册部分需要分离成另一个网站,域名和之前的不一样,所以需要保证旧地址可以也可以重定向到地址,我们在旧系统的节点层做了一个重定向,代码类似这样:

  

  这里没有设置状态码。发现默认是302跳转,然后我们设置301状态码,像这样:

  

  用fiddle抓包(上面的302调整我就不拍了),看看效果:

  

  上面是使用Express,使用nodejs原生代码来实现这样的东西:

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线