def register(first_name, last_name, email, password):
    session = requests.Session()
    html = session.get(REGISTER_URL)
    form = parse_form(html.content)
    form['first_name'] = first_name
    form['last_name'] = last_name
    form['email'] = email
    form['password'] = form['password_two'] = password
    api_key = get_api_key()
    img = get_captcha_img(html.content)
    api = CaptchaAPI(api_key)
    captcha_id, captcha = api.solve(img)
    form['recaptcha_response_field'] = captcha
    resp = session.post(html.url, form)
    success = '/user/register' not in resp.url
    if success:
        api.report(captcha_id, 1)
    else:
        form_errors = fromstring(resp.content).cssselect('div.error')
        print('Form Errors:')
        print('\n'.join(
            ('  {}: {}'.format(f.get('id'), f.text) for f in form_errors)))
        if 'invalid' in [f.text for f in form_errors]:
            api.report(captcha_id, 0)
    return success
Example #2
0
def register(first_name, last_name, email, password):
    session = requests.Session()
    html = session.get(REGISTER_URL)
    form = parse_form(html.content)
    form['first_name'] = first_name
    form['last_name'] = last_name
    form['email'] = email
    form['password'] = form['password_two'] = password
    img_data = get_b64_string(html.content)
    img = get_captcha_img(html.content)
    img.show()  # This will show the image locally when run
    api_key = get_api_key()
    captcha_id = send_captcha(api_key, img_data)
    print('submitted captcha, got id:', captcha_id)
    sleep(300)
    captcha = get_captcha_text(api_key, captcha_id)
    print('captcha solve:', captcha)
    form['recaptcha_response_field'] = captcha
    resp = session.post(html.url, form)
    success = '/user/register' not in resp.url
    if not success:
        form_errors = fromstring(resp.content).cssselect('div.error')
        print('Form Errors:')
        print('\n'.join(
            ('  {}: {}'.format(f.get('id'), f.text) for f in form_errors)))
    return success
Example #3
0
File: edit.py Project: tuksik/wswp
def change_currency():
    session = requests.Session()
    response, session = login(session=session)
    country_html = session.get(COUNTRY_URL)
    data = parse_form(country_html.content)
    print('currency is: ', data['currency_name'])
    data['currency_name'] = 'British pounds'
    response = session.post(COUNTRY_URL, data=data)
    test_currency = get_currency()
    print('currency is now: ', test_currency)
    assert test_currency == data['currency_name']
Example #4
0
File: edit.py Project: tuksik/wswp
def add_population():
    session = requests.Session()
    response, session = login(session=session)
    country_html = session.get(COUNTRY_URL)
    data = parse_form(country_html.content)
    print('population is: ', data['population'])
    data['population'] = int(data['population']) + 1
    response = session.post(COUNTRY_URL, data=data)
    test_population = get_population()
    print('population is now:', test_population)
    assert test_population == data['population']
Example #5
0
def register(first_name, last_name, email, password):
    session = requests.Session()
    html = session.get(REGISTER_URL)
    form = parse_form(html.content)
    form['first_name'] = first_name
    form['last_name'] = last_name
    form['email'] = email
    form['password'] = form['password_two'] = password
    img = get_captcha_img(html.content)
    captcha = ocr(img)
    form['recaptcha_response_field'] = captcha
    resp = session.post(html.url, form)
    success = '/user/register' not in resp.url
    if not success:
        form_errors = fromstring(resp.content).cssselect('div.error')
        print('Form Errors:')
        print('\n'.join(
            ('  {}: {}'.format(f.get('id'), f.text) for f in form_errors)))
    return success
import requests
from chp6.login import parse_form

REGISTER_URL = 'http://example.webscraping.com/user/register'

session = requests.Session()

html = session.get(REGISTER_URL)
form = parse_form(html.content)
print(form)