今天在给我姐夫写一个 QQ 自动加好友的程序,但是在 HttpClient 登陆 QQ 的时候报了一个错:

-- ::33.727 [Thread-] - Invalid cookie header: "Set-Cookie: pt2gguin=;Expires=Thu, 01 Jan 1970 00:00:00 GMT;Path=/;Domain=qq.com;". Invalid 'expires' attribute: Thu,  Jan  :: GMT
-- ::33.738 [Thread-] - Invalid cookie header: "Set-Cookie: pt2gguin=o3413198711;Expires=Tue, 19 Jan 2038 03:14:07 GMT;Path=/;Domain=ptlogin2.qq.com;". Invalid 'expires' attribute: Tue, Jan :: GMT
-- ::33.751 [Thread-] - Invalid cookie header: "Set-Cookie: pt_recent_uins=813d3b6002b7444a612a73b16d2bfc8d63cf29eee15b914f23387c79f948909fa0d856264f22e6d89bc1722e84d35c466e84178100c282cb;Expires=Thu, 14 Mar 2019 06:08:34 GMT;Path=/;Domain=ptlogin2.qq.com;HttpOnly;". Invalid 'expires' attribute: Thu, Mar :: GMT
-- ::33.760 [Thread-] - Invalid cookie header: "Set-Cookie: RK=jyxghgEN/Q;Expires=Tue, 19 Jan 2038 03:14:07 GMT;Path=/;Domain=qq.com;". Invalid 'expires' attribute: Tue, Jan :: GMT
-- ::33.772 [Thread-] - Invalid cookie header: "Set-Cookie: ptcz=c22602e5a8b3b23af9924e4fe230dca938964da3a2536767863084df7c79ffdd;Expires=Tue, 19 Jan 2038 03:14:07 GMT;Path=/;Domain=qq.com;". Invalid 'expires' attribute: Tue, Jan :: GMT
-- ::33.783 [Thread-] - Invalid cookie header: "Set-Cookie: ptcz=;Expires=Thu, 01 Jan 1970 00:00:00 GMT;Path=/;Domain=ptlogin2.qq.com;". Invalid 'expires' attribute: Thu, Jan :: GMT
-- ::33.793 [Thread-] - Invalid cookie header: "Set-Cookie: airkey=;Expires=Thu, 01 Jan 1970 00:00:00 GMT;Path=/;Domain=qq.com;". Invalid 'expires' attribute: Thu, Jan :: GMT

这里提示设置的 Cookie expires 无效,我看了下值都是长这样的 Thu, 01 Jan 1970 00:00:00 GMT。查了下资料发现说是因为 HttpClient4 默认的 cookie 策略是不支持这种格式。

既然查出原因就好办了

1、第一种办法就是把服务器设置的 cookie 值改掉

2、修改默认的 cookie 策略,改为 STANDARD_STRICT 或者 STANDARD

我这里因为是腾讯的服务器我改不了所有我选择了第二种:

我这里也不是直接用的 HttpClient4,用的是 net.dongliu.requests 封装好的,我也没找到他有提供修改的 cookie 策略的地方。我比较粗暴,直接把他封装的ClientBuilder 类修改成 CookieSpecs.STANDARD_STRIC 直接类覆盖了。

 RequestConfig.Builder configBuilder = RequestConfig.custom()
.setConnectTimeout(connectTimeout)
.setSocketTimeout(socketTimeout)
// we use connect timeout for connection request timeout
.setConnectionRequestTimeout(connectTimeout)
.setCookieSpec(CookieSpecs.STANDARD);

或者直接

HttpClient httpClient = HttpClients.custom()
.setDefaultRequestConfig(RequestConfig.custom()
.setCookieSpec(CookieSpecs.STANDARD).build())
.build();

也有说可以用 BROWSER_COMPATIBILITY 或者 NETSCAPE  策略的,但是我试了没有成功。

相关资料链接:

https://stackoverflow.com/questions/36473478/fixing-httpclient-warning-invalid-expires-attribute-using-fluent-api

https://issues.apache.org/jira/browse/HTTPCLIENT-1077

HttpClient 报错 Invalid cookie header, Invalid 'expires' attribute: Thu, 01 Jan 1970 00:00:00 GMT的更多相关文章

  1. HttpClient4 警告: Invalid cookie header 的问题解决(转)

    原文地址:HttpClient4 警告: Invalid cookie header 的问题解决 最近使用HttpClient4的时候出现如下警告信息 org.apache.http.client.p ...

  2. webMagic解析淘宝cookie 提示Invalid cookie header

    webMagic解析淘宝cookie 提示Invalid cookie header 在使用webMagic框架做爬虫爬取淘宝极又家页面时候一直提醒cookie设置不可用如下图 淘宝的验证特别严重,c ...

  3. 使用xadmin搜索search_fields报错:Related Field got invalid lookup: icontains

    一.问题描述 使用xadmin实现Django后台功能时,使用search_fields = [字段名,字段名],在搜索的时候报错Related Field got invalid lookup: i ...

  4. Vue报错之"[Vue warn]: Invalid prop: type check failed for prop "jingzinum". Expected Number with value NaN, got String with value "fuNum"."

    一.报错截图 [Vue warn]: Invalid prop: type check failed for prop "jingzinum". Expected Number w ...

  5. EL表达式报错:  According to TLD or attribute directive in tag file, attribute value does not accept any expressions

    EL表达式报错: According to TLD or attribute directive in tag file, attribute value does not accept any ex ...

  6. pymysql下报错:numpy.float64 object has no attribute 'translate' 可能是pandas版本的问题

    pymysql下报错:numpy.float64 object has no attribute 'translate'.定位到db.merge函数中,dataframe中浮点型元素的类型为numpy ...

  7. 使用jstl报错:According to TLD or attribute directive in tag file, attribute value does not accept any expressions

    使用jstl报错:According to TLD or attribute directive in tag file, attribute value does not accept any ex ...

  8. 使用jstl标签报错:According to TLD or attribute directive in tag file, attribute value

    原来jstl标签版本不一样,标签支持不一样. jstl1.0标签库不支持表达式,如: <c:if test="${query01 == null}">   <js ...

  9. pycharm安装 package报错:module 'pip' has no attribute 'main'

    转自: <pycharm安装 package报错:module 'pip' has no attribute 'main'> https://www.cnblogs.com/Fordest ...

随机推荐

  1. Google XSS Challenge

    https://xss-game.appspot.com/level1 https://xss-game.appspot.com/level1 payload: <svg onload=aler ...

  2. 提升机器学习数学基础,这7本书一定要读-附pdf资源

    文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | KDnuggets 作者 | Ajit Jaokar 转自 | 新智元 编辑 | 大明 [编 ...

  3. PowerShell禁止执行脚本解决方法

    无法加载文件 C:\***.p s1,因为在此系统中禁止执行脚本.有关详细信息,请参阅 "get-help about_signing". 所在位置 行:1 字符: 18 + .\ ...

  4. XMPP协议之消息回执解决方案

    苦恼中寻找方法 在开始做即时通信时就知道了消息回执这个概念,目的是解决通讯消息因为各种原因未送达对方而提供的一种保障机制.产生这个问题的原因主要是网络不稳定.服务器或者客户端一些异常导致没有接收到消息 ...

  5. 再谈AbstractQueuedSynchronizer1:独占模式

    关于AbstractQueuedSynchronizer JDK1.5之后引入了并发包java.util.concurrent,大大提高了Java程序的并发性能.关于java.util.concurr ...

  6. Java转PHP的心路历程

    首先,我要批评一下自己,已经好久没发博客了.总是拿奇奇怪怪的理由来妨碍自己写博客. emmmm,现在心里舒服一点了. 前提 在2018年的11月7号,我从广州跳槽到一个三线的小城市工作.跳槽原因比较羞 ...

  7. PHP Iterator迭代对象属性

    foreach用法和之前的数组遍历是一样的,只不过这里遍历的key是属性名,value是属性值.在类外部遍历时,只能遍历到public属性的,因为其它的都是受保护的,类外部不可见. class Har ...

  8. Redis常用数据类型和事物以及并发

    Redis数据类型 基本类型(String int): 如 set key value .get key 等 所有命令都是按照 key value keys * 可以将全部数据列出,其中后面的 &qu ...

  9. 编辑器开发之 Selection 对象的学习

    上一篇,介绍了 range 对象的一些属性和方法,了解了一些基本操作,现在来介绍另外一个重要的对象:selection 对象: MDN 的解释是:Selection 对象表示用户选择的文本范围或插入符 ...

  10. MySQL命令窗口下中文显示乱码的解决过程

    在dos客户端输出窗口中查询表中的数据,还有项目部署到服务器上时前台的页面,中文数据都显示成乱码,如下图所示: 这个问题困扰了我一天,后来解决了才发现原来我的方向错了,一直我以为是SpringBoot ...