const cookies = [
'c_user=100024636xxxxxx;',
'xs=17%3Ay2GduLHcLRdxxxxxxxxx;',
'datr=ECrSZK6PAi69trh6txxxxxxxx;',
'dpr=1.3636363636363635;',
'fr=0j74mLNoFhotcKElj.AWUS2rxxxxxxxxx;',
'm_page_voice=100024636xxxxxx;',
'presence=C%7B%22lm3%22%3A%22u.10000xxxxxxxxxxxxx;',
"usida=eyJ2ZXIiOjEsImlkIjoiQXMxxxxxxxxxxxxx;",
'wd=1408x164;',
'x-src=%2Fdocs%2Ffacebookxxxxxxxxxxxxxx',
'm_pixel_ratio=1;',
];
const url = 'https://www.facebook.com'; // Adres URL strony, którą chcesz pobrać
function run() {
try {
const options = createRequestOptions(cookies);
const htmlContent = fetchHtmlContent(url, options);
if (htmlContent) {
const folder = createOrGetFolder();
const fileName = createFileName(new Date());
saveContentToFile(folder, fileName, htmlContent);
const fileUrl = getFileUrl(folder, fileName);
if (fileUrl) {
logFileUrl(fileUrl);
} else {
console.error('Błąd podczas uzyskiwania URL pliku.');
}
} else {
console.error('Błąd podczas pobierania zawartości HTML.');
}
} catch (error) {
console.error('Błąd:', error.message);
}
}
function createRequestOptions(cookies) {
return {
method: 'GET',
headers: {
'Cookie': cookies.join(';'),
},
};
}
function fetchHtmlContent(url, options) {
const response = UrlFetchApp.fetch(url, options);
if (response.getResponseCode() === 200) {
return response.getContentText();
} else {
console.error(`Błąd ${response.getResponseCode()}: Nie udało się pobrać zawartości HTML.`);
return null;
}
}
function createOrGetFolder() {
const folderName = createFolderName(new Date());
const folderIterator = DriveApp.getFoldersByName(folderName);
return folderIterator.hasNext() ? folderIterator.next() : DriveApp.createFolder(folderName);
}
function createFolderName(date) {
const year = date.getFullYear();
const month = (date.getMonth() + 1).toString().padStart(2, '0');
const day = date.getDate().toString().padStart(2, '0');
return `${year}/${month}/${day}`;
}
function createFileName(date) {
const hour = date.getHours().toString().padStart(2, '0');
const minute = date.getMinutes().toString().padStart(2, '0');
const second = date.getSeconds().toString().padStart(2, '0');
return `${hour}${minute}${second}.html`;
}
function saveContentToFile(folder, fileName, content) {
try {
folder.createFile(fileName, content, 'text/html');
} catch (error) {
console.error(`Błąd podczas zapisywania pliku: ${error.message}`);
}
}
function getFileUrl(folder, fileName) {
const file = folder.getFilesByName(fileName);
return file.hasNext() ? file.next().getUrl() : null;
}
function logFileUrl(url) {
if (url) {
console.log(`Link do zapisanego pliku: ${url}`);
}
}
/* const phpSession = 'ciasteczko uwierzytelniające';
const url = 'adres URL, którego zawartość jest dostępna tylko po zalogowaniu';
function getParsedHTML() {
try {
const options = {
headers: {
'Cookie': `PHPSESSID=${phpSession}`
}
};
const response = UrlFetchApp.fetch(url, options);
// Przetwarzanie odpowiedzi, parsując ją jako tekst HTML lub JSON
const htmlContent = response.getContentText();
// Dalsza część kodu, która opracowuje zawartość strony pochodzącej ze zmiennej htmlContent
Logger.log(htmlContent); // Loguj zawartość do dziennika
} catch (error) {
console.error('Błąd:', error);
}
}
*/
Jak myślicie, co jeszcze należałoby zrobić w kodzie powyżej, aby pobrać zawartość strony facebook po zalogowaniu, kod działa dla prostszych stron, gdzie udało mi się odnieść sukces, tutaj mozecie sobie sprawdzić, w tym przypadku kod ładuje pustą stronę tak jakby tylko nagówek bez konkretnych danych, próbuję kopiować całą sesję cooke i wysłać ją w nagłówku https, ciasteczka, które są wypisane w kodzie w zmiennej "cookies", ale to nie wystarcza, pytanie dlaczego?
Wiem, że facebook stosuje uwierzytelnienie za pomocą tokena, ale chciałem hipotetycznie zrobić to w inny sposób