impfbot icon indicating copy to clipboard operation
impfbot copied to clipboard

Optimize interval timings

Open sibalzer opened this issue 4 years ago • 5 comments

Example for Contribution:

No Shadowban after 2 Days:

Settings

  • sleep_between_requests_in_s=300
  • sleep_between_failed_requests_in_s=30
  • sleep_after_ipban_in_min=180
  • jitter=15

sibalzer avatar May 25 '21 02:05 sibalzer

Just tested the last days, should be fine too:

Settings:

  • sleep_between_requests_in_s=120
  • sleep_between_failed_requests_in_s=10
  • sleep_after_ipban_in_min=180
  • jitter=10

going now lower (60s)

sibalzer avatar Jun 01 '21 09:06 sibalzer

Are you guys actually sure, that the ipBan really exists? Never experienced such thing using:

Code
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

import json
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

from seleniumwire import webdriver

from selenium.webdriver.support.ui import WebDriverWait


datum="1.2.2020"
plzahl="123456"
caps = DesiredCapabilities.CHROME
caps['goog:loggingPrefs'] = {'performance': 'ALL'}
driver = webdriver.Chrome(desired_capabilities=caps)
#driver = webdriver.Chrome()
driver.get("https://www.impfportal-niedersachsen.de/portal/#/appointment/public")

#sleep(1000)

checkBox = driver.find_element_by_name("datenschutz")
checkBox.click()


#weiter=driver.find_element_by_link_text(" Weiter ")
time.sleep(1)

weiter=driver.find_element_by_xpath("//span[contains(text(), ' Weiter ')]")
weiter.click()
time.sleep(1)
weiter.click()
time.sleep(1)

age = driver.find_element_by_id('mat-input-2')

age.send_keys(datum)
weiter.click()
time.sleep(1)
weiter.click()
time.sleep(1)
#time.sleep(5)
sick = driver.find_element_by_tag_name("mat-radio-button")
sick = driver.find_element_by_class_name("mat-radio-container")
driver.execute_script("arguments[0].click();", sick);
gotIt=driver.find_element_by_xpath("//span[contains(text(), 'Verstanden')]")
gotIt.click()
time.sleep(1)
weiter.click()
time.sleep(1)
weiter.click()
time.sleep(1)
plz = driver.find_element_by_name("zipCode")
plz.send_keys(plzahl)
check=driver.find_element_by_xpath("//span[contains(text(), 'Suchen')]")
check.click()
time.sleep(3)

jay= json.loads(driver.last_request.response.body)
outOfStock=jay["resultList"][0]["outOfStock"]
while(outOfStock):
    try:
        check.click()
    except:
        print("Error")
        continue
    #time.sleep(1)
    onStock="Fehler"
    outOfStock=jay["resultList"][0]["outOfStock"]
    onStock=not outOfStock
    print("Impfe verfügbar: "+str(onStock))
print("yeeees")


time.sleep(100000000000000)


driver.close()

copakahuna avatar Jun 06 '21 11:06 copakahuna

Yes there are ip bans (403s) and shadowbans with captchas. When and why (and which conditions) lead to a ban are unknown. With 15s on my home connection i had relatively fast only captchas and shortly after 403s, with a bussiness connection and 1s cooldown there was none. How long has your code been running?

sibalzer avatar Jun 06 '21 11:06 sibalzer

script has been running for hours with zero sleeptime in between requests. captchas do appear when vaccine was found and selected, on the "enter your telephone number" page, but never on the "search for vaccine" page which i am refreshing in a the while loop. I'm using selenium so the request is getting build by chrome. So maybe the server is detecting by header, that the request is produced by a bot?

copakahuna avatar Jun 06 '21 20:06 copakahuna

Using selenium/a real browser don't manke any difference, as far as i can tell. Please report back in a few days if anything has changed.

sibalzer avatar Jun 06 '21 21:06 sibalzer