Как мне войти в систему для нескольких веб-приложений без прерывания работы пользователя, чтобы поддерживать их сеансы активными - PullRequest
0 голосов
/ 02 октября 2019

Нам нужно войти в 20-30 различных веб-приложений и ввести учетные данные, чтобы пользователь оставался активным в течение дня. Это должно происходить в фоновом режиме на компьютере пользователя без прерывания работы пользователя. Какие технологии мы используем здесь для достижения этой цели?

Мы думали об использовании RPA, но это навязчиво и вызывает прерывание работы пользователя. Пользователю будет запрещено пользоваться своей машиной во время работы RPA.

Мы ожидаем, что этот автоматизированный код будет входить в несколько веб-приложений по одному или в параллельном потоке (без предпочтений) в течение дня по расписанию. или пользователь может сбросить это. Это автоматизированное решение должно быть в состоянии хранить учетные данные пользователя и не допускать ввода пользователем их учетных данных.

Можем ли мы использовать C #, vbscript, java или любой другой инструмент разработки программного обеспечения для достижения такого рода усилий?

1 Ответ

0 голосов
/ 05 октября 2019

Конечно, это возможно. Самая большая проблема, с которой вы, вероятно, столкнетесь, заключается в том, что разные веб-сайты могут использовать разные механизмы для аутентификации, но большинство из них, вероятно, могут быть обобщены.

Вот простой однопоточный пример в Python, но можно использовать любой язык и реализовать параллелизм.

import requests
import re


# Put the configuration for each website in a structure like this
websites = [
    {
        'url': 'https://example.com/login',
        'form': {'username': 'myusername', 'password': 'password123'}
        'csrf_token': {'regex': '<input type="hidden" name="csrf_token" value="(.*)">', 'post': 'csrf_token'},
        'check': 'Welcome, myusername!',
    },
    {
        'url': 'https://example2.com/login.php',
        'form': {'username': 'myotheruser', 'password': 'qwertyuiop'}
        'csrf_token': {'regex': '<input type="hidden" name="_token" value="(.*)">', 'post': '_token'},
        'check': 'My Account',
    },
    ... more websites
]

for website in websites:
    # Use sessions so cookies are preserved
    session = requests.Session()

    # If the website requires CSRF tokens, we need to fetch the login page first to extract the token
    if website.get('csrf_token'):
        r = session.get(website['url'])
        csrf_token = re.search(website['csrf_token']['regex'], r.text).group(1)
        # Update post params with CSRF token value
        website['form'][website['csrf_token']['post']] = csrf_token
    r = session.post(website['url'], data=website['form'])

    # Check if login worked
    if website['check'] in r.text:
        print("Successfully logged in to:", website['url'])
    else:
        print("Failed to log in to:", website['url'])



Обратите внимание, что в этом примере не делается несколько наивных предположений относительно токенов CSRF, ниэто реализует обработку ошибок. Надеюсь, это даст вам представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...