Comments 6
Огонёк!
По версии кода для человеков, взял пример с памятью и попросил ChatGPT поправить нейминг переменных, результат:
function retrieveMemoryProperties(memoryPrototype, filteredProperties) {
(memoryPrototype = p),
(filteredProperties = Object.getOwnPropertyNames(
Object.getPrototypeOf(window.performance.memory)
).filter(function(propertyName, currentPrototype) {
return (currentPrototype = memoryPrototype), propertyName !== 'constructor';
})),
filteredProperties.map(function(propertyName, currentMemoryPrototype) {
(currentMemoryPrototype = memoryPrototype), memoryPropertiesArray.push(window.performance.memory[propertyName].toString(36));
});
}
function callRetrieveMemoryProperties() {
if ((retrieveMemoryProperties(), callCounter++, callCounter === 3)) return void callUnknownFunction();
setTimeout(callRetrieveMemoryProperties, 55);
}
ИИ так же дал описание того что делает функция:
It's difficult to say exactly what this code does without knowing what the other variables, such as
p
,c
, andh
, are and what thee
function does. However, I can tell you what this code appears to do in a general sense.The
retrieveMemoryProperties
function takes two arguments,memoryPrototype
andfilteredProperties
.memoryPrototype
is assigned the value ofp
, andfilteredProperties
is assigned the result of filtering the property names of the prototype of thewindow.performance.memory
object. The filtered properties are those whose names are not equal to'constructor'
.The filtered properties are then mapped over, and for each property, the value of
memoryPrototype
is assigned the value ofp
, and the value of the property is pushed onto an array calledmemoryPropertiesArray
as a base-36 string.The
callRetrieveMemoryProperties
function calls theretrieveMemoryProperties
function, increments a countercallCounter
, and checks if it's equal to 3. If it is, it calls an unknown functioncallUnknownFunction
. If not, it sets a timeout to callcallRetrieveMemoryProperties
again in 55 milliseconds.
Кажется с подсказками ИИ разбирать такой код может быть проще.
Кажется с подсказками ИИ разбирать такой код может быть проще.
Наверное, поначалу да, но со временем потребность в этом отпадает, если честно) Когда постоянно читаешь подобного рода скрипты, то как-то без особых проблем понимаешь происходящее. Но, как ещё один из вариантов применения ChatGPT, почему нет. Возьму на заметку, спасибо.
А ещё, чтобы лучше разбираться в техниках минификации и не впадать в ступор при виде !0
вместо true
, стоит погуглить(или поспрашивать у ChatGPT) "JavaScript golfing". Например, можно почитать что-то подобное.
Я так понимаю, мало кто дочитал до конца, но проделанная тут работа просто божественна!
Это очень круто, спасибо! По работе часто сталкиваюсь с защитой Cloudflare, давным-давно были рабочие аддоны для того же Scrapy, чтобы handshake этот проделывать, но они уже давно не работают. Стоит чему-то подобному получить огласку, и CF выкатывают обновление :) В закладки!
Отличная статья! Не знал что хитрую проверку плагинов можно обойти...
Chrome Headless против cloudflare JS challenge