cookie处理在谷歌Apps脚本 - 如何发送饼干头?(Cookie handling in Go

2019-06-25 03:07发布

我试着写一个简单的脚本,从网页提取文本,并处理字符串。 不过,该网站要求我先登录,我成功地登录到该网站。 这是我如何登录:

var payload = {"name1":"val1","name2":val2"};

var opt ={"payload":payload,"method":"post"};

var respose = UrlFetchApp.fetch("http://website.com/login",opt);

登录后,网站会将我http://website.com/home 。 我检查response.getContentText()我可以确认我已成功登录,因为它包含从文本http://website.com/home 。 现在我需要的内容http://website.com/page和处理它。 我首先假定该脚本可以自己处理cookie及进行

var pagedata = UrlFetchApp.fetch("http://website.com/page);//Did not work

这显然没有工作和pagedata.getContentText()说:我先登录,这表明小甜饼没有顺利通过..

然后我试图提取登录时沿着这个请求发送给它的服务器响应的cookie。

var cookie = response.getAllHeaders()['Set-Cookie'];     

// variable cookie now contains  a legitimate cookie.

// It contains 'JSESSIONID=blabla;Path=/' and 
// it is the ONLY cookie that server responds.

我试图发送的cookie在我的页面请求。

var header = {'Cookie':cookie};

var opt2 = {"header":header};

var pagedata = UrlFetchApp.fetch("http://website.com/page",opt2);

我认为,即使现在甜饼无法正常发送,作为内容又说我登录。

我是否正确地传递饼干? 我需要关于请求发送的cookie正确的方法帮助。

Answer 1:

在这里你可以找到饼干规格: http://www.w3.org/Protocols/rfc2109/rfc2109

你在你的代码中潜在的问题:response.getAllHeaders()“设置Cookie”]可以返回一个字符串或如果有多个“的Set-Cookie”属性从服务器发回的字符串表。

埃里克是正确的,你不能没有它消化返回cookie。

第二个错误在你的代码:

var opt2 = {"header":header};

应该

var opt2 = {"headers":header};

要知道也是GAS使用谷歌的IP。 它可以发生两个连续的获取使用不同的IP地址。 您正在连接的服务器可能是会话的IP依赖。

你确定服务器只认证后发送回一个饼干吗?



Answer 2:

它看起来像你正确UrlFetchApp.fetch(设置标头)。

我相信,在Set-Cookie头的数据是大于在Cookie头所期望的数据格式不同。 例如,设置Cookie包含过期等信息



Answer 3:

我用谷歌脚本获取并从我的谷歌电子表格发送cookie,我认为这是行不通的。 Cookies是在几分钟内不同。

下面您将使用发现四个饼干UrlFetchApp.fetch()从谷歌电子表格脚本请求到同一站点中,只有不同的是分钟...我认为这是可能的,使用谷歌的IP和不同任何时候...

有人知道如何解决呢?

该代码是:

Cookie=response0.getAllHeaders()['Set-Cookie'];  

饼干:

B=12gp68lcnp5q4&b=3&s=sk; expires=Sun, 29-Jul-2018 14:10:12 GMT; path=/; domain=.***.com                    

B=7us258lcnp5sh&b=3&s=oc; expires=Sun, 29-Jul-2018 14:11:29 GMT; path=/; domain=.***.com                    

B=5nviv8tcnp5u5&b=3&s=qf; expires=Sun, 29-Jul-2018 14:12:22 GMT; path=/; domain=.***.com                    

B=c8eumg9cnp5vp&b=3&s=uj; expires=Sun, 29-Jul-2018 14:13:13 GMT; path=/; domain=.***.com                    


文章来源: Cookie handling in Google Apps Script - How to send cookies in header?