1
當您檢查Gmail的客戶端源代碼時。有VIEW_DATA
變量包含許多與用戶數據有關的東西。是否有可能通過Javascript訪問這些數據?如何通過Javascript從Gmail源代碼訪問VIEW_DATA變量
當您檢查Gmail的客戶端源代碼時。有VIEW_DATA
變量包含許多與用戶數據有關的東西。是否有可能通過Javascript訪問這些數據?如何通過Javascript從Gmail源代碼訪問VIEW_DATA變量
它在使用後的某個點看起來很像VIEW_DATA
重置爲undefined
,可能是爲了節省內存。 Gmail似乎將幾乎所有東西放在封閉的地方,這使得從全球背景下難以獲得它。
一個possible- 但脆弱 -approach將查詢DOM爲<script>
元素,其中VIEW_DATA
定義,這將使您的原始腳本,讓你eval()
它在自己的範圍內。例如:
// get all of the <script> elements on the page
var scripts = document.getElementsByTagName('script'),
thisScript, varViewDataPos, viewDataScript, viewData
;
// loop through each one looking for VIEW_DATA being defined
for(var i = 0; i < scripts.length; i++) {
thisScript = scripts[ i ].textContent;
varViewDataPos = thisScript.indexOf('var VIEW_DATA=');
if(varViewDataPos >= 0) {
// might as well toss everything before VIEW_DATA is defined
viewDataScript = thisScript.slice(varViewDataPos);
break;
}
}
// eval what we found (if anything), but in a closure to avoid polluting
// the global namespace
viewData = (function(script) {
eval(script);
return VIEW_DATA;
})(viewDataScript);
console.log(viewData || 'Oops, script not found.');
就像我說的,雖然,就像任何屏幕一樣,這很脆弱。如果谷歌在你身邊移動任何東西,你可能會發現自己突然評估了你不想要的東西,比如函數調用將最終打破頁面。需要您自擔風險使用它。
您可能發現最終其他方法(如嘗試在DOM中查找您要查找的數據)更明智。
絢爛!非常感謝。 – 2012-04-09 13:14:19