2013-04-21 29 views
0

我正在嘗試模擬Gmail請求。基本上我打算獲取所有json響應。使用curl模擬Gmail請求

當您在Gmail中點擊Themes -> Change you background image時,您會看到一個可從中選擇圖片的picasa精選圖庫。我設法得到請求POST字符串gmail使用獲取更多的圖像使用chrome developer tools -> Network -> XHR。我將這個請求複製爲curl。

curl "https://mail.google.com/picker/pvr?hl=en&native=1&hostId=gm-theme" -H ":host: mail.google.com" -H ":version: HTTP/1.1" -H "origin: https://mail.google.com" -H "accept-encoding: gzip,deflate,sdch" -H "accept-language: en-US,en;q=0.8" -H "content-control: no-cache" -H "cookie: GMAIL-COOKIES" -H "content-length: 257" -H ":path: /picker/pvr?hl=en&native=1&hostId=gm-theme" -H "accept-charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3" -H "user-agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31" -H "content-type: application/x-www-form-urlencoded;charset=UTF-8" -H "accept: */*" -H "referer: https://mail.google.com/_/mail-static/_/js/main/m_i,t/rt=h/ver=NB-HmMH_MVQ.en./sv=1/am=!JjrcIo7GA7b0RPF-I9tbYvMmngnebTyl_O_8x6inji58opxSrbuft8sKd6tLvMR8EoLV76U/d=1?random=1366542355442" -H "x-same-domain: explorer" -H ":scheme: https" -H ":method: POST" --data "start=2050&numResults=50&sort=3&desc=true&data=0&view=2&service=picasa&type=featured&options=%7B%22excludeLabels%22%3Anull%7D&token=MY-TOKEN&version=4&subapp=5&app=2&clientUser=16140887335626099390&authuser=0" 


當我在捲曲運行此,代替接收JSON文件I接收混淆/加密文本,例如:link

爲什麼響應不是JSON文本這樣的:link

回答

1

結果是一樣的,你只是忘了解壓縮結果。如果我將abc.json重命名爲abc.json.gz並提取abc.json,我會得到一個與normal.json相同的結果。

normal.json

&&&START&&&{"response":{"cursor":"2100","docs":[{"attrs":{"ut":1.20922026E12}... 

abc.json(解壓縮後):

&&&START&&&{"response":{"cursor":"50","docs":[{"attrs":{"ut":1.364824967E12}... 
+0

它被壓縮的原因是因爲服務器被告知,3種不同類型的壓縮響應是可以接受的:'-H「accept-encoding:gzip,deflate,sdch」'。爲了避免壓縮,可以用下面的代碼:'-H「accept-encoding:identity」',或者完全省略標題。 – 2013-04-21 15:24:01

+0

@RemyLebeau我從來沒有注意到「身份」,但很高興知道。有關'Accept-Encoding'的更多信息可以在[RFC 2616 section 14.3](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.3)中找到。 – rekire 2013-04-21 15:27:31

+0

或者改變curl命令行來省略手動'accept-encoding'頭文件,而是使用curl自己的'-compressed'參數來替代,以便它可以爲你解壓縮數據。一些正在使用的手動標題具有本地捲曲equivilents應該使用,而不是。 – 2013-04-21 15:28:30