Skip to content

Instantly share code, notes, and snippets.

@Daniel-M
Last active May 24, 2022 19:47
Show Gist options
  • Save Daniel-M/ec80b1d0c0554f2723de0a930dd7b9b2 to your computer and use it in GitHub Desktop.
Save Daniel-M/ec80b1d0c0554f2723de0a930dd7b9b2 to your computer and use it in GitHub Desktop.
Filling scammers database with trash using selenium https://daniel-m.github.io/2022/05/dealing-with-scammers-using-selenium/
import time
import random
import string
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from seleniumwire import webdriver
def random_with_N_digits(n):
range_start = 10**(n-1)
range_end = (10**n)-1
return random.randint(range_start, range_end)
def random_string_N_chars(n):
return ''.join(random.choice(string.ascii_letters) for _ in range(n))
# Create a request interceptor
def interceptor(request):
del request.headers['User-Agent'] # Delete the header first
request.headers['User-Agent'] = 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Mobile Safari/537.36'
def fill_fake_data():
# Set the interceptor on the driver
firefox_options = webdriver.FirefoxOptions()
firefox_options.headless = True
driver = webdriver.Firefox(options=firefox_options)
driver.request_interceptor = interceptor
driver.set_window_rect(x=433, y=836)
print("Navigating to target...")
driver.get("https://envios.coordinadora-com.online/index.php")
time.sleep(3)
elem = driver.find_element(by=By.CLASS_NAME, value='sarca')
elem.click()
time.sleep(2)
selectors = {
# ID
'#frm_payment > div > div.payment-form > div:nth-child(1) > input': lambda s: s.send_keys(random_with_N_digits(10)),
# Name
'#frm_payment > div > div.payment-form > div:nth-child(2) > input': lambda s: s.send_keys(random_string_N_chars(random.randint(3,10))),
# Address
'#frm_payment > div > div.payment-form > div:nth-child(3) > input': lambda s: s.send_keys(random_string_N_chars(random.randint(10,15))),
# Cellphone
'#frm_payment > div > div.payment-form > div:nth-child(4) > input': lambda s: s.send_keys(random_with_N_digits(10)),
# City
'#frm_payment > div > div.payment-form > div:nth-child(5) > input': lambda s: s.send_keys(random_string_N_chars(random.randint(4,10))),
# Credit Card Number
'#frm_payment > div > div.payment-form > div:nth-child(6) > input': lambda s: s.send_keys(random_with_N_digits(16)),
# CCV
'#frm_payment > div > div.payment-form > div:nth-child(7) > input': lambda s: s.send_keys(random_with_N_digits(3)),
# Pick Month
'#frm_payment > div > div.payment-form > div:nth-child(8) > select': lambda s: Select(s).select_by_index(random.randint(0,11)),
# Pick Year
'#frm_payment > div > div.payment-form > div:nth-child(9) > select': lambda s: Select(s).select_by_index(random.randint(2,8)),
# Send
'#frm_payment > div > div.frm_block.centered > button': lambda s: s.click(),
}
print("Filling data...")
for selector, op in selectors.items():
sel = driver.find_element(by=By.CSS_SELECTOR, value=selector)
op(sel)
print("Submitted!")
time.sleep(3)
driver.close()
for i in range(1000):
print(f"Sending the {i}-th filling")
fill_fake_data()
selenium==4.1.5
selenium-wire==4.6.4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment