SSR
<all_urls>
(function() {
const firstNamesAlex = ["Noam", "TEST", "NoamTest", "NAME"]
const lastNamesAlex = ["Kore", "LastName", "Koretski"]
function randomDate(startStr, endStr) {
const startDate = new Date(startStr);
const endDate = new Date(endStr);
// If dates are invalid, set default values
if (isNaN(startDate.getTime()) || isNaN(endDate.getTime())) {
return '1990-01-01';
// Default date
}
const randomTime = startDate.getTime() + Math.random() * (endDate.getTime() - startDate.getTime());
const date = new Date(randomTime);
const yyyy = date.getFullYear();
let mm = date.getMonth() + 1;
// Months start at 0!
let dd = date.getDate();
if (dd < 10)
dd = '0' + dd;
if (mm < 10)
mm = '0' + mm;
return `${yyyy}-${mm}-${dd}`;
}
// Function to generate a random 9-digit number as a string
function randomNineDigitNumber() {
return Math.floor(100000000 + Math.random() * 900000000).toString();
}
// Function to pick a random element from an array
function getRandomElement(arr) {
return arr[Math.floor(Math.random() * arr.length)];
}
// Get today's date
const today = new Date();
// Function to fill the passenger forms
function fillForms() {
// Get all passenger forms
const passengerForms = document.querySelectorAll('.personal-details-form');
passengerForms.forEach(function(form, index) {
const titleElement = form.querySelector('.personal-details-form__title');
let passengerType = 'adult';
if (titleElement) {
const titleText = titleElement.textContent;
if (titleText.includes('ילד') || titleText.includes('ילדה')) {
passengerType = 'child';
} else if (titleText.includes('תינוק') || titleText.includes('תינוקת')) {
passengerType = 'infant';
} else {
passengerType = 'adult';
}
}
const nameInput = form.querySelector('input[name$=".name"]');
if (!nameInput) {
return;
}
const nameAttr = nameInput.getAttribute('name');
const namePrefix = nameAttr.substring(0, nameAttr.indexOf('.'));
const firstName = getRandomElement(firstNamesAlex);
const randomLetters = Array.from({
length: 3
}, () => String.fromCharCode(97 + Math.floor(Math.random() * 26))).join('')
const lastName = getRandomElement(lastNamesAlex) + randomLetters;
const dobInput = form.querySelector(`input[name="${namePrefix}.dateOfBirth"]`);
let dobMin, dobMax;
if (passengerType === 'adult') {
const maxAdultDOB = new Date(today.getFullYear() - 18,today.getMonth(),today.getDate());
dobMin = dobInput.getAttribute('min') || '1920-01-01';
dobMax = maxAdultDOB.toISOString().split('T')[0];
} else if (passengerType === 'child') {
const minChildDOB = new Date(today.getFullYear() - 11,today.getMonth(),today.getDate());
const maxChildDOB = new Date(today.getFullYear() - 3,today.getMonth(),today.getDate());
dobMin = minChildDOB.toISOString().split('T')[0];
dobMax = maxChildDOB.toISOString().split('T')[0];
} else if (passengerType === 'infant') {
const minInfantDOB = new Date(today.getFullYear() - 2,today.getMonth(),today.getDate());
const maxInfantDOB = today;
dobMin = minInfantDOB.toISOString().split('T')[0];
dobMax = maxInfantDOB.toISOString().split('T')[0];
} else {
dobMin = dobInput.getAttribute('min') || '1920-01-01';
dobMax = dobInput.getAttribute('max') || '2022-12-31';
}
const dateOfBirth = randomDate(dobMin, dobMax);
const passportExpInput = form.querySelector(`input[name="${namePrefix}.passportExpirationDate"]`);
let passportExpMinAttr = passportExpInput.getAttribute('min') || '2024-01-01';
let passportExpMin = new Date(Math.max(new Date(passportExpMinAttr), new Date('2026-01-01')));
let passportExpMaxAttr = passportExpInput.getAttribute('max') || '2100-12-31';
let passportExpMax = new Date(passportExpMaxAttr);
const passportExpirationDate = randomDate(passportExpMin.toISOString().split('T')[0], passportExpMax.toISOString().split('T')[0]);
const passportNumber = randomNineDigitNumber();
const telephone = '+972501234567';
const additionalTelephone = '+972501234567';
const email = `test${index + 1}@example.com`;
const gender = index % 2 === 0 ? 'male' : 'female';
const fillField = (selector, value) => {
const field = form.querySelector(selector);
if (field) {
const nativeInputValueSetter = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(field), 'value').set;
nativeInputValueSetter.call(field, value);
const event = new Event('input',{
bubbles: true
});
field.dispatchEvent(event);
}
};
fillField(`input[name="${namePrefix}.name"]`, firstName);
fillField(`input[name="${namePrefix}.lastName"]`, lastName);
fillField(`input[name="${namePrefix}.dateOfBirth"]`, dateOfBirth);
fillField(`input[name="${namePrefix}.passport"]`, passportNumber);
fillField(`input[name="${namePrefix}.passportExpirationDate"]`, passportExpirationDate);
fillField(`input[name="${namePrefix}.telephone"]`, telephone);
fillField(`input[name="${namePrefix}.additionalTelephone"]`, additionalTelephone);
fillField(`input[name="${namePrefix}.email"]`, email);
fillField(`input[name="${namePrefix}.emailConfirmation"]`, email);
fillField(`input[name="${namePrefix}.companyName"]`, 'TestCompany');
const setCountryCode = (selector) => {
const countryField = form.querySelector(selector);
if (countryField) {
countryField.value = 'IL';
// 'IL' for Israel
const event = new Event('change',{
bubbles: true
});
countryField.dispatchEvent(event);
}
};
setCountryCode(`select[name="${namePrefix}.telephoneCountry"]`);
setCountryCode(`select[name="${namePrefix}.additionalTelephoneCountry"]`);
// Simulate click on gender radio button
const genderField = form.querySelector(`input[name="${namePrefix}.gender"][value="${gender}"]`);
if (genderField) {
genderField.click();
}
});
}
document.querySelectorAll('.terms-section input').forEach(cb => cb.click());
// Run the script 5 times to ensure all forms are filled
for (let i = 0; i < 5; i++) {
fillForms();
}
}
)();
Install requires the InjectJS Chrome extension. Scripts run only on sites matching the pattern above. Review code before installing any community script.