11 Commits
1.2 ... master

Author SHA1 Message Date
AB
decd96fe5c Implement cache TTL 2020-03-30 10:02:19 +00:00
AB
a5ac105177 Update bot for new age of fesmoo site. 2020-03-28 15:06:27 +00:00
AB
4b0a8a7675 Hotfix 2019-12-26 20:51:35 +00:00
AB
2ece55bd6f Hotfix 2019-12-26 20:43:30 +00:00
AB
45177e13e4 major UI improvement. 2019-12-26 20:19:10 +00:00
AB
d348989afb major UI improvement. 2019-12-26 20:18:40 +00:00
c631da43a1 Start keyboard version 2019-12-26 16:56:16 +03:00
6ab5e06c5e Remove trash 2019-12-26 16:41:57 +03:00
AB
ab7aef8da7 Adjust bot to new portal. 2019-12-06 12:23:21 +03:00
AB
16d8af1bac Fix 30th pages (4 options pages) 2019-03-28 19:48:12 +03:00
AB
377213edfd Update some scam_data. Split list command for subjects and tests. 2019-03-28 18:28:23 +03:00
10 changed files with 432 additions and 333 deletions

2
.gitignore vendored
View File

@ -1,8 +1,10 @@
# configs
creds.ini
baraban.build/
tg_settings.py
*.swp
*.swo
.vscode/
# Byte-compiled / optimized / DLL files
__pycache__/

117
.vscode/launch.json vendored
View File

@ -1,117 +0,0 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}"
},
{
"name": "Python: Attach",
"type": "python",
"request": "attach",
"localRoot": "${workspaceFolder}",
"remoteRoot": "${workspaceFolder}",
"port": 3000,
"secret": "my_secret",
"host": "localhost"
},
{
"name": "Python: Terminal (integrated)",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
},
{
"name": "Python: Terminal (external)",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "externalTerminal"
},
{
"name": "Python: Django",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/manage.py",
"args": [
"runserver",
"--noreload",
"--nothreading"
],
"debugOptions": [
"RedirectOutput",
"Django"
]
},
{
"name": "Python: Flask (0.11.x or later)",
"type": "python",
"request": "launch",
"module": "flask",
"env": {
"FLASK_APP": "${workspaceFolder}/app.py"
},
"args": [
"run",
"--no-debugger",
"--no-reload"
]
},
{
"name": "Python: Module",
"type": "python",
"request": "launch",
"module": "module.name"
},
{
"name": "Python: Pyramid",
"type": "python",
"request": "launch",
"args": [
"${workspaceFolder}/development.ini"
],
"debugOptions": [
"RedirectOutput",
"Pyramid"
]
},
{
"name": "Python: Watson",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/console.py",
"args": [
"dev",
"runserver",
"--noreload=True"
]
},
{
"name": "Python: All debug Options",
"type": "python",
"request": "launch",
"pythonPath": "${config:python.pythonPath}",
"program": "${file}",
"module": "module.name",
"env": {
"VAR1": "1",
"VAR2": "2"
},
"envFile": "${workspaceFolder}/.env",
"args": [
"arg1",
"arg2"
],
"debugOptions": [
"RedirectOutput"
]
}
]
}

View File

@ -1,5 +0,0 @@
{
"python.pythonPath": "/bin/python",
"python.formatting.provider": "yapf",
"python.linting.pylintEnabled": false
}

View File

@ -7,5 +7,5 @@ RUN apt-get update && \
WORKDIR /usr/share/fesmoo_perdoliq
COPY ./*py /usr/share/fesmoo_perdoliq/
CMD python3 baraban.py
CMD python3 bot_keys.py

View File

@ -9,46 +9,12 @@ import os
import sys
import logging
import threading
import telegram
from telegram.error import NetworkError, Unauthorized
from time import sleep
try:
TOKEN = os.environ["TG_TOKEN"]
except:
print("You have to set env var TG_TOKEN with bot token.")
sys.exit(1)
try:
if os.environ["DRYRUN"]:
from dryrun import Perdoliq
except:
from main import Perdoliq
update_id = None
from main import Perdoliq
def main():
"""Run the bot."""
global update_id
# Telegram Bot Authorization Token
bot = telegram.Bot(TOKEN)
# get the first pending update_id,
# this is so we can skip over it in case
# we get an "Unauthorized" exception.
try:
update_id = bot.get_updates()[0].update_id
except IndexError:
update_id = None
logging.basicConfig(level=logging.DEBUG)
while True:
try:
handle_update(bot)
except NetworkError:
sleep(1)
except Unauthorized:
# The user has removed or blocked the bot.
update_id += 1
list_test('4016014', '40403')
def perdoliq(username, password, subj, test, acc, is_delayed):
@ -69,82 +35,6 @@ def list_test(username, password):
return "Exception: " + str(e)
def handle_update(bot):
"""Echo the message the user sent."""
global update_id
# Request updates after the last update_id
for update in bot.get_updates(offset=update_id, timeout=10):
update_id = update.update_id + 1
if update.message:
# if there is and update, process it in threads
t = threading.Thread(target=do_action, args=(update,))
t.start()
def do_action(update):
try:
s = update.message.text.split()
except:
return 1
if s[0] == '/resolve':
if len(s) != 7:
update.message.reply_markdown("Missing operand... Try again")
update.message.reply_markdown("Usage: */resolve <user[text]> "\
"<pass[text]> <subj[int]> <test[int]> "\
"<accuracy[0-100]> <commit[1/0]>*")
return False
msg = "Please wait. If you have chosen commit=1, so test "\
"going to be resolved in about 20 minutes and will "\
"be commited automatically, otherwise it will take "\
"about a 2 minutes and you have to "\
"commit it by yourself. Just wait. PS you have "\
"chosen subj %s "\
"test %s and accuracy %s" % (s[3], s[4], s[5])
update.message.reply_text(msg)
update.message.reply_text("You cannot resolve more than "\
"one test in the same time."\
"Одновременно решать более одного теста невозможно,"\
" вы испортите результаты обоих тестов.")
perdoliq(s[1], s[2], s[3], s[4], s[5], s[6])
update.message.reply_text("It's done. Check your test because "\
"i disclaim any responsibility.")
elif s[0] == '/list':
try:
if len(s) == 3:
update.message.reply_text("Fetching tests...")
sleep(5)
tests = list_test(s[1], s[2])
#print("******",tests)
else:
update.message.reply_markdown("Usage: */list <user[text]>"\
" <pass[text]>*")
return False
except:
update.message.reply_markdown("Usage: */list <user[text]>"\
" <pass[text]>*")
return False
msg = "Here is an available tests:\n``` "
i = 0
#print("******",tests)
for subj in tests:
msg = msg + (" [%s] %s\n" % (i, subj))
i += 1
j = 0
for test in tests[subj]:
msg = msg + (" [%s] %s\n" % (j, test))
j += 1
update.message.reply_markdown(msg + "```\n Pay attention to "\
"numbers in brackets \[..] *Here is subj and test numbers*")
else:
update.message.reply_markdown("Possible commands: */resolve, /list*")
update.message.reply_markdown("Usage: */resolve <user[text]> "\
"<pass[text]> <subj[int]> <test[int]> "\
"<accuracy[0-100]> <commit[1/0]>*")
update.message.reply_markdown("Usage: */list <user[text]> "\
"<pass[text]>*")
if __name__ == '__main__':
try:
main()

92
bot.py
View File

@ -6,16 +6,17 @@ on the telegram.ext bot framework.
This program is dedicated to the public domain under the CC0 license.
"""
import os
import sys
import logging
import threading
import telegram
from telegram.error import NetworkError, Unauthorized
from time import sleep
try:
import tg_settings
TOKEN = os.environ["TG_TOKEN"]
except:
print("You have to create tg_settings.py. See tg_settings.py.example.")
os.exit(1)
print("You have to set env var TG_TOKEN with bot token.")
sys.exit(1)
try:
if os.environ["DRYRUN"]:
from dryrun import Perdoliq
@ -29,7 +30,6 @@ def main():
"""Run the bot."""
global update_id
# Telegram Bot Authorization Token
TOKEN = tg_settings.TG_TOKEN
bot = telegram.Bot(TOKEN)
# get the first pending update_id,
@ -86,9 +86,83 @@ def do_action(update):
s = update.message.text.split()
except:
return 1
# if s[0] == '/resolve':
# return 0
if __name__ == '__main__':
main()
if s[0] == '/resolve':
if len(s) != 7:
update.message.reply_markdown("Missing operand... Try again")
update.message.reply_markdown("Usage: */resolve <user[text]> "\
"<pass[text]> <subj[int]> <test[int]> "\
"<accuracy[0-100]> <commit[1/0]>*")
return False
msg = "Please wait. If you have chosen commit=1, so test "\
"going to be resolved in about 20 minutes and will "\
"be commited automatically, otherwise it will take "\
"about a 2 minutes and you have to "\
"commit it by yourself. Just wait. PS you have "\
"chosen subj %s "\
"test %s and accuracy %s" % (s[3], s[4], s[5])
update.message.reply_text(msg)
update.message.reply_text("You cannot resolve more than "\
"one test in the same time."\
"Одновременно решать более одного теста невозможно,"\
" вы испортите результаты обоих тестов.")
perdoliq(s[1], s[2], s[3], s[4], s[5], s[6])
update.message.reply_text("It's done. Check your test because "\
"i disclaim any responsibility.")
elif s[0] == '/list':
try:
if len(s) == 3:
update.message.reply_text("Fetching subjects...")
sleep(1)
tests = list_test(s[1], s[2])
msg = "Here is an available subjects:\n```"
i = 0
for subj in tests:
tests_count = len(tests[subj])
msg = msg + (" [%s] %s (%s tests)\n" % (i, subj, tests_count))
i += 1
# j = 0
# for test in tests[subj]:
# msg = msg + (" [%s] %s\n" % (j, test))
# j += 1
update.message.reply_markdown(msg + "```\n Pay attention to "\
"numbers in brackets \[..] *Here is subj or test numbers*")
elif len(s) == 4:
update.message.reply_text("Fetching tests...")
sleep(1)
tests = list_test(s[1], s[2])
i = int(s[3])
msg = "Here is an available tests:\n"
j = 0
for subj in tests:
if j == i:
msg = msg + ("``` *** %s ***\n----------\n" % subj)
k = 0
for test in tests[subj]:
msg = msg + ("[%s] %s\n" % (k, test))
k += 1
j += 1
update.message.reply_markdown(msg + "```\n Pay attention to "\
"numbers in brackets \[..] *Here is subj or test numbers*")
else:
update.message.reply_markdown("Usage: */list <user[text]>"\
" <pass[text]>*")
return False
except:
update.message.reply_markdown("Usage: */list <user[text]>"\
" <pass[text]>*")
return False
else:
update.message.reply_markdown("Possible commands: */resolve, /list*")
update.message.reply_markdown("Usage: */resolve <user[text]> "\
"<pass[text]> <subj[int]> <test[int]> "\
"<accuracy[0-100]> <commit[1/0]>*")
update.message.reply_markdown("Usage: */list <user[text]> "\
"<pass[text]>*")
if __name__ == '__main__':
try:
main()
except:
pass

257
bot_keys.py Normal file
View File

@ -0,0 +1,257 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Simple Bot to reply to Telegram messages.
This is built on the API wrapper, see echobot2.py to see the same example built
on the telegram.ext bot framework.
This program is dedicated to the public domain under the CC0 license.
"""
import os
import sys
import logging
import threading
from telegram import *
from telegram.ext import Updater, CommandHandler, CallbackQueryHandler
from telegram.error import NetworkError, Unauthorized
from time import sleep
from functools import wraps
import datetime
import logging
logging.basicConfig(level=logging.INFO)
now = datetime.datetime.now()
from pprint import pprint
try:
TOKEN = os.environ["TG_TOKEN"]
except:
print("You have to set env var TG_TOKEN with bot token.")
sys.exit(1)
try:
if os.environ["DRYRUN"]:
from dryrun import Perdoliq
except:
from main import Perdoliq
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO)
LOG = logging.getLogger(__name__)
auth = dict()
cached_tests = dict()
def main():
"""Run bot."""
updater = Updater(TOKEN, use_context=True)
dp = updater.dispatcher
dp.add_handler(CallbackQueryHandler(button_handler))
dp.add_handler(CommandHandler("login", login,
pass_args=True,
pass_job_queue=True,
pass_chat_data=True))
dp.add_handler(CommandHandler("list", list_,
pass_args=True,
pass_job_queue=True,
pass_chat_data=True))
# log all errors
dp.add_error_handler(error)
updater.start_polling()
updater.idle()
def error(update, context):
"""Log Errors caused by Updates."""
LOG.warning('Update "%s" caused error "%s"', update, context.error)
def is_authorized(id_):
def decorator(f):
@wraps(f)
def wrapped(*args, **kwargs):
if args[0].effective_user.id not in auth:
LOG.info(
"User %s (%s) is new user. Redirecting to login.",
args[0].effective_user.first_name,
args[0].effective_user.id)
return login_first(*args, **kwargs)
ret = f(*args, **kwargs)
return ret
return wrapped
return decorator
def login_first(update, context):
msg = "Необходимо авторизоваться. "\
"Авторизация будет сохранена "\
"до момента перезагрузки бота. Пример: /login <user> <pass>"
try:
update.message.reply_text(msg)
except:
query = update.callback_query
query.edit_message_text(msg)
LOG.info("Going to login")
def login(update, context):
user_id = update.effective_user.id
message = update.message.text.split()
if len(message) == 3:
login = message[1]
passwd = message[2]
auth[user_id] = dict()
auth[user_id]["login"] = login
auth[user_id]["passwd"] = passwd
update.message.reply_text("Учетные данные сохранены.")
elif len(message) == 2 and message[1] == 'status':
if user_id in auth:
update.message.reply_text(
"Вы авторизованы с данными: {} : {}***\n"\
"Для обновления данных авторизуйтесь повторно.".format(
auth[user_id]["login"],
auth[user_id]["passwd"][0:2]))
else:
update.message.reply_text("Вы еще не авторизованы.")
else:
update.message.reply_text("Запрет! Попытка взлома! Делай так: "\
"/login <user> <pass> или /login status")
def perdoliq(username, password, subj, test, acc, submit=True, is_delayed=False):
try:
app = Perdoliq(username, password)
app.auth()
app.resolve(subj, test, acc, submit, is_delayed)
except Exception as e:
return "Exception: " + str(e)
def list_test(username, password):
now = datetime.datetime.now()
cache_name = f"{now.month}_{now.day}_{now.hour}"
if cache_name in cached_tests:
cache_username = cached_tests[cache_name].get(username, None)
if cache_username:
return cache_username
try:
app = Perdoliq(username, password)
app.auth()
tests = app.get_tests()
if not cached_tests.get(cache_name, None):
cached_tests[cache_name] = dict()
cached_tests[cache_name][username] = tests
return tests
except Exception as e:
return "Exception: " + str(e)
@is_authorized('list_')
def list_(update, context):
query = update.callback_query
user_id = update.effective_user.id
tests = list_test(auth[user_id]["login"], auth[user_id]["passwd"])
keyboard = list()
i = 1
for subj in tests:
tests_count = len(tests[subj])
#msg = msg + (" [%s] %s (%s tests)\n" % (i, subj, tests_count))
keyboard.append([InlineKeyboardButton(f"{i}. {subj}", callback_data=f"s_{i}")])
i += 1
keyboard.append([InlineKeyboardButton("Закрыть", callback_data=f"close")])
reply_markup = InlineKeyboardMarkup(keyboard)
update.message.reply_text('Чо будем хакать?', reply_markup=reply_markup)
@is_authorized('button_handler')
def button_handler(update, context):
query = update.callback_query
user_id = update.effective_user.id
tests = list_test(auth[user_id]["login"], auth[user_id]["passwd"])
if query.data.split('_')[0] == 'close':
query.edit_message_text('Пака братишка')
if query.data.split('_')[0] == 's': # subj
data = query.data
subj_num = query.data.split('_')[1]
keyboard = list()
subj_name = None
j = 1 # subj number
i = 1 # test number
for subj in tests:
LOG.debug("Checking: %s. %s is %s", subj, j, subj_num)
if j != int(subj_num):
j += 1
continue
else:
LOG.info("Found needed subj: %s", subj)
subj_name = subj
for test in tests[subj]:
LOG.info("Found test: %s", test)
keyboard.append([
InlineKeyboardButton(f"{i}. {test}",
callback_data=f"t_{i}_{data}")])
i += 1
break
keyboard.append([InlineKeyboardButton("Закрыть", callback_data=f"close")])
reply_markup = InlineKeyboardMarkup(keyboard)
query.edit_message_text(
f"Ok, решаем {subj_name}, а какой тест?",
reply_markup=reply_markup)
if query.data.split('_')[0] == 't': # test
data = query.data
keyboard = [[], []]
in_a_row = 4
for p in range(0, 101, 5):
if len(keyboard[-1]) == in_a_row:
keyboard.append(list())
keyboard[-1].append(InlineKeyboardButton(f"{p}", callback_data=f"p_{p}_{data}"))
keyboard.append([InlineKeyboardButton("Закрыть", callback_data=f"close")])
reply_markup = InlineKeyboardMarkup(keyboard)
query.edit_message_text("Ok, а какая точность?", reply_markup=reply_markup)
if query.data.split('_')[0] == 'm': # autosubmit
data = query.data
keyboard = [[
InlineKeyboardButton(f"Быстро", callback_data=f"d_0_{data}"),
InlineKeyboardButton(f"С задержками", callback_data=f"d_1_{data}"),]]
keyboard.append([InlineKeyboardButton("Закрыть", callback_data=f"close")])
reply_markup = InlineKeyboardMarkup(keyboard)
query.edit_message_text(
"Решить тест быстро или с задержками, типа я думал над ответом.",
reply_markup=reply_markup)
if query.data.split('_')[0] == 'p': # precision
data = query.data
keyboard = [[
InlineKeyboardButton(f"Завершить", callback_data=f"m_1_{data}"),
InlineKeyboardButton(f"Не завершать", callback_data=f"m_0_{data}"),]]
keyboard.append([InlineKeyboardButton("Close", callback_data=f"close")])
reply_markup = InlineKeyboardMarkup(keyboard)
query.edit_message_text(
"Завершить тест автоматически после решения или оставить для проверки?",
reply_markup=reply_markup)
if query.data.split('_')[0] == 'd': # is_delayed
data = query.data
LOG.info(data)
# d_0_m_1_p_100_t_1_s_10
subj = query.data.split('_')[9]
test = query.data.split('_')[7]
precision = query.data.split('_')[5]
submit = bool(int(query.data.split('_')[3]))
delay = bool(int(query.data.split('_')[1]))
query.edit_message_text(
"Опять работа... "\
"Пока я решаю тест ЗАПРЕЩЕНО "\
"пользоваться сайтом с тестами. "\
"Резултат будет испорчен.")
perdoliq(
auth[user_id]["login"],
auth[user_id]["passwd"],
int(subj)-1,
int(test)-1,
precision,
submit,
delay)
query.edit_message_text("Так! Я все решил.")
if __name__ == '__main__':
try:
main()
except Exception as e:
LOG.error("%s", e)
pass

50
main.py
View File

@ -16,30 +16,45 @@ class Perdoliq:
self.SessionId = ''
self.name = ''
self.subjects = {}
@staticmethod
def get_secrets(response, input_id):
soup = BeautifulSoup(response.text, "html.parser")
try:
secret = soup.find(id=input_id).get('value', '')
except AttributeError:
secret = ''
logging.debug(f'*** Found {input_id}: {secret}')
return secret
# make auth
def auth(self):
r = requests.get(settings.fesmu_root_url)
for c in r.cookies:
if c.name == 'ASP.NET_SessionId':
self.SessionId = c.value
logging.info('ASP.NET_SessionId for curtain session is %s',
c.value)
self.SessionId = r.cookies.get('ASP.NET_SessionId', None)
logging.info('ASP.NET_SessionId for curtain session is %s',
self.SessionId)
data={
'ctl00$MainContent$UserText': self.username,
'ctl00$MainContent$PassText': self.password,
'ctl00_MainContent_ToolkitScriptManager1_HiddenField': '',
'ctl00$MainContent$ASPxButton1': '',
'__EVENTTARGET': '',
'__EVENTARGUMENT': '',
'__VIEWSTATE': self.get_secrets(r, '__VIEWSTATE'),
'__VIEWSTATEGENERATOR': self.get_secrets(r, '__VIEWSTATEGENERATOR'),
'__EVENTVALIDATION': self.get_secrets(r, '__EVENTVALIDATION'),
#'DXScript': get_secrets(r, 'DXScript'),
}
r = requests.post(
settings.fesmu_root_url,
data=settings.merge(
settings.scam_data_1, {
'ctl00$MainContent$TextBox1': self.username,
'ctl00$MainContent$TextBox2': self.password,
}),
data = data,
headers=settings.headers,
cookies={'ASP.NET_SessionId': self.SessionId})
r = requests.get(
settings.fesmu_root_url + 'startstu.aspx',
cookies={'ASP.NET_SessionId': self.SessionId})
soup = BeautifulSoup(r.text, "html.parser")
#print("****** ", soup)
_p = re.compile(',.*$')
self.name = _p.sub(
'', soup.find(id="ctl00_MainContent_Label1").get_text())[14:]
@ -62,6 +77,7 @@ class Perdoliq:
# parse tests per subject
i = 0
for subject in self.subjects:
logging.info('Found subject %s' % subject)
r = requests.post(
settings.fesmu_root_url + 'studtst1.aspx',
data=settings.merge(settings.scam_data_2,
@ -70,6 +86,7 @@ class Perdoliq:
soup = BeautifulSoup(r.text, "html.parser")
for test in soup.find_all(class_="dxeListBoxItem_Aqua dxeLTM"):
if test.get_text() != '\xa0':
logging.info('\tFound test %s for subject %s' % (test.get_text(), subject))
self.subjects[subject].append(test.get_text())
logging.debug('%s - Found test %s' % (subject,
test.get_text()))
@ -133,7 +150,7 @@ class Perdoliq:
settings.fesmu_root_url + 'studtst3.aspx',
data=settings.scam_data_5,
cookies={'ASP.NET_SessionId': self.SessionId})
# get answer page
# get page with answers
r = requests.get(
settings.fesmu_root_url + 'studtst5.aspx',
cookies={'ASP.NET_SessionId': self.SessionId},
@ -156,6 +173,7 @@ class Perdoliq:
settings.fesmu_root_url + 'studtst30.aspx',
data=settings.scam_data_7,
cookies={'ASP.NET_SessionId': self.SessionId})
# get page with answers
r = requests.get(
settings.fesmu_root_url + 'studtst5.aspx',
cookies={'ASP.NET_SessionId': self.SessionId},
@ -222,8 +240,10 @@ class Perdoliq:
data=settings.scam_data_10,
cookies={'ASP.NET_SessionId': self.SessionId})
def resolve(self, subj, test, accuracy, is_delayed=False):
def resolve(self, subj, test, accuracy=100, submit=False, is_delayed=False):
# renew auth
logging.info(
f"Resolving subj {subj}, test {test}, acc {accuracy}, submit {submit}, delay {is_delayed}")
self.auth()
# get count of questions
q_count = self.start_test(subj, test)
@ -254,5 +274,5 @@ class Perdoliq:
self.answer(i, prediction)
# make autocommit
if is_delayed == True:
if submit == True:
self.finish_test()

View File

@ -1,7 +1,4 @@
# python3 only
pip install requests
pip install beautifulsoup4
pip install python-telegram-bot
requests
beautifulsoup4
python-telegram-bot

View File

@ -6,32 +6,32 @@ def merge(x, y):
z.update(y) # modifies z with y's keys and values & returns None
return z
headers = {
"Host": "www.fesmu.ru",
"Connection": "keep-alive",
"Content-Length": '896',
"Cache-Control": "max-age=0",
"Origin": "http://www.fesmu.ru",
"Upgrade-Insecure-Requests": '1',
"DNT": '1',
"Content-Type": "application/x-www-form-urlencoded",
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Referer": "http://www.fesmu.ru/eport/eport/",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "en-US,en;q=0.9,ru;q=0.8,zh-CN;q=0.7,zh;q=0.6",
}
scam_data_1 = {
'ctl00$MainContent$UserText':
'',
'ctl00$MainContent$PassText':
'',
'__EVENTTARGET':
'',
'ctl00_MainContent_ToolkitScriptManager1_HiddenField':
'',
'__EVENTARGUMENT':
'',
'__VIEWSTATE':
'/wEPDwUKLTQ4NzYwNDEzOQ9kFgJmD2QWAgIDD2QWAgIBD2QWAgIFDw8WAh4EVGV4dAVA0KHQtdC50YfQsNGBINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5INC90LAg0L/QvtGA0YLQsNC70LU6IDE0OWRkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYEBR1jdGwwMCRNYWluQ29udGVudCRBU1B4QnV0dG9uMQUdY3RsMDAkTWFpbkNvbnRlbnQkQVNQeEJ1dHRvbjMFHWN0bDAwJE1haW5Db250ZW50JEFTUHhCdXR0b24yBR1jdGwwMCRNYWluQ29udGVudCRBU1B4QnV0dG9uNCwdlTOn/Y3tYt2bGQcxN1Ayzl4rDNlkVU6tnQ6bR4Dx',
'__VIEWSTATEGENERATOR':
'73D4C735',
'__EVENTVALIDATION':
'/wEdAAcLL4CnFN6qTtcjF0fQcU/LUN0eEH6RAZcaSKVdt8S4X7osef1mutGT26WuFCdWwFYhaXIQoXEs7lyT4XozQ4OInWK1mn7aEBNhVaP9v76fJNxRJK/kVxlULg0AsW337/IhsIAW9IW5kv7Tf6wiSWjxVWBHkOt1REFfEOsSpvCk8uTD/X8OKiSobFuKW+nh/Sg=',
'ctl00$MainContent$ASPxButton2':
'',
'ctl00$MainContent$TextBox3':
'',
'ctl00$MainContent$TextBox4':
'',
'DXScript':
'1_42,1_75,2_27'
'ctl00_MainContent_ToolkitScriptManager1_HiddenField': '',
# '__EVENTTARGET': '',
# '__EVENTARGUMENT': '',
'__VIEWSTATE': '/wEPDwUKLTM5Mjc2OTQzMQ9kFgJmD2QWAgIDD2QWAgIBD2QWAgIFDw8WAh4EVGV4dAW7AdCX0LAg0YHRg9GC0LrQuCDRg9C90LjQutCw0LvRjNC90YvRhSDQsNCy0YLQvtGA0LjQt9C40YDQvtCy0LDQvdC90YvRhSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSDQvdCwINC/0L7RgNGC0LDQu9C1OiAyNjY3PGJyLyA+0KHQtdC50YfQsNGBINC/0L7QtNC60LvRjtGH0LXQvdC40Lkg0Log0L/QvtGA0YLQsNC70YM6IDUzOTVkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQUdY3RsMDAkTWFpbkNvbnRlbnQkQVNQeEJ1dHRvbjFA+y5c2mr9OLuyebEMey8lwZdb51brZaJ6iXIvwaVWpg==',
# '__VIEWSTATEGENERATOR': '73D4C735',
'__EVENTVALIDATION': '/wEdAAMqLyJo1lw62U+c0YXYJTJCUN0eEH6RAZcaSKVdt8S4X7osef1mutGT26WuFCdWwFaDQnYjJQ2/uhzVMKV3HbBN40+h9rsbvZwG3sNsqevEUg==',
'ctl00$MainContent$ASPxButton1': '',
# 'DXScript': '1_42,1_75,2_27',
}
scam_data_2 = {
@ -106,44 +106,25 @@ scam_data_4 = {
}
scam_data_5 = {
'ctl00_MainContent_ToolkitScriptManager1_HiddenField':
'',
'__EVENTTARGET':
'',
'__EVENTARGUMENT':
'',
'__VIEWSTATE':
'/wEPDwUKLTg2NDIzNjE0Ng9kFgJmD2QWAgIDD2QWAmYPZBYCAg8PZBYSAgEPPCsABAEADxYCHgVWYWx1ZQU90YTQuNC30LjQutC+LdGF0LjQvNC40YfQtdGB0LrQuNC1INC80LXRgtC+0LTRiyDQsNC90LDQu9C40LfQsGRkAgUPPCsABAEADxYCHwAFENCX0LDQtNCw0L3QuNC1IDFkZAIHDxQrAAQPFgIfAAUr0JLQsNGIINC70LjQvNC40YIg0LLRgNC10LzQtdC90LggNTgg0LzQuNC9LmQ8KwAMAQAWBB4JRm9yZUNvbG9yCk8eBF8hU0ICBGRkZAIJDw8WAh4EVGV4dAUZSi1DNkg0LUNIMyAg0LggIEM2SDVDSDItSmRkAg0PDxYCHwMFIyAxLiDQmNCaLdGB0L/QtdC60YLRgNC+0YHQutC+0L/QuNGPZGQCEQ8PFgIfAwUjIDIuINCj0KQt0YHQv9C10LrRgtGA0L7RgdC60L7Qv9C40Y9kZAIVDw8WAh8DBQogMyAu0J/QnNCgZGQCGQ8PFgIfAwUKIDQgLtCt0J/QoGRkAh0PDxYCHwMFJyA1LiDQvNCw0YHRgS3RgdC/0LXQutGC0YDQvtC80LXRgtGA0LjRj2RkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBR5jdGwwMCRNYWluQ29udGVudCRBU1B4QnV0dG9uMDR1MyONTwjHeh5KMbmXa0KX80/Rfc6GB9jZCQdthjv7eg==',
'__VIEWSTATEGENERATOR':
'A8B80323',
'__EVENTVALIDATION':
'/wEdAAeaNITRANe52jN2SIod7jskCa17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQgrZ+0y1djOQFJQdjlbLnVhP/HXZRS6bBCR/aTH01z+96QXwtwz0yGK8AotoL9rTbsbA6BMGYlcSDZheWZSsKo8=',
'ctl00$MainContent$hfo1':
'1',
'ctl00$MainContent$hfo2':
'1',
'ctl00$MainContent$hfo3':
'1',
'ctl00$MainContent$hfo4':
'1',
'ctl00$MainContent$hfo5':
'1',
'ctl00$MainContent$hf1':
'0',
'ctl00$MainContent$ASPxButton04':
'',
'ctl00$MainContent$ASPxCheckBox1':
'C',
'ctl00$MainContent$ASPxCheckBox2':
'C',
'ctl00$MainContent$ASPxCheckBox3':
'C',
'ctl00$MainContent$ASPxCheckBox4':
'C',
'ctl00$MainContent$ASPxCheckBox5':
'C',
'DXScript':
'1_42,1_75,2_27,2_34,2_40,2_30',
'ctl00_MainContent_ToolkitScriptManager1_HiddenField': '',
'__EVENTTARGET':'',
'__EVENTARGUMENT':'',
'__VIEWSTATE': '/wEPDwUKMTI5MTM5NzM3Nw9kFgJmD2QWAgIDD2QWAmYPZBYCAg8PZBYSAgEPPCsABAEADxYCHgVWYWx1ZQVd0JjRgdGC0L7RgNC40YfQtdGB0LrQuNC1INC80L7QtNC10LvQuCDQuCDQvNC+0YDQsNC70YzQvdGL0LUg0L/RgNC40L3RhtC40L/RiyDQsdC40L7RjdGC0LjQutC4ZGQCBw88KwAEAQAPFgIfAAUQ0JfQsNC00LDQvdC40LUgMWRkAgkPFCsABA8WAh8ABSvQktCw0Ygg0LvQuNC80LjRgiDQstGA0LXQvNC10L3QuCA2MCDQvNC40L0uZDwrAAwBABYEHglGb3JlQ29sb3IKTx4EXyFTQgIEZGRkAgsPDxYCHgRUZXh0BeoB0KHQvtCz0LvQsNGB0L3QviDCq9Ce0YHQvdC+0LLQsNC8INC30LDQutC+0L3QvtC00LDRgtC10LvRjNGB0YLQstCwINCg0L7RgdGB0LjQudGB0LrQvtC5INCk0LXQtNC10YDQsNGG0LjQuCDQvtCxINC+0YXRgNCw0L3QtSDQt9C00L7RgNC+0LLRjNGPINCz0YDQsNC20LTQsNC9wrsgKDE5OTMpIMKr0LzQtdC00LjRhtC40L3RgdC60LDRjyAo0LLRgNCw0YfQtdCx0L3QsNGPKSDRgtCw0LnQvdCwwrsgLSDRjdGC0L46ZGQCDw8PFgIfAwV3MS4g0L/QsNGB0L/QvtGA0YLQvdGL0LUg0LTQsNC90L3Ri9C1LCDRgdCy0LXQtNC10L3QuNGPINC+INC80LXRgdGC0LUg0YDQsNCx0L7RgtGLLCDRgdC10LzQtdC50L3QvtC8INC/0L7Qu9C+0LbQtdC90LjQuDtkZAITDw8WAh8DBYgBMi4g0LjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0LHQvtC70LXQt9C90LgsINGB0L7QtNC10YDQttCw0YnQsNGP0YHRjyDQsiDQvNC10LTQuNGG0LjQvdGB0LrQuNGFINC00L7QutGD0LzQtdC90YLQsNGFINCz0YDQsNC20LTQsNC90LjQvdCwO2RkAhcPDxYCHwMFRDMuINC40L3RhNC+0YDQvNCw0YbQuNGPLCDQv9C+0LvRg9GH0LXQvdC90LDRjyDQvtGCINC/0LDRhtC40LXQvdGC0LA7ZGQCGw8PFgIfAwVsNC4g0LjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0L/RgNC10LHRi9Cy0LDQvdC40Lgg0LPRgNCw0LbQtNCw0L0g0LIg0LHQvtC70YzQvdC40YfQvdC+0Lwg0YPRh9GA0LXQttC00LXQvdC40Lg7ZGQCHw8PFgIfAwVkNS4g0LjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0YTQsNC60YLQtSDQvtCx0YDQsNGJ0LXQvdC40Y8g0LfQsCDQvNC10LTQuNGG0LjQvdGB0LrQvtC5INC/0L7QvNC+0YnRjNGOLmRkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYCBR1jdGwwMCRNYWluQ29udGVudCRBU1B4QnV0dG9uNQUeY3RsMDAkTWFpbkNvbnRlbnQkQVNQeEJ1dHRvbjA0Nms3Y6hjvD2W4hemKFPRQ88Mc9mMcGL7F8vhsUXl8ho=',
'__VIEWSTATEGENERATOR': 'A8B80323',
'__EVENTVALIDATION': '/wEdAAfvP6vyY1BLXPbKgalQ8wlHCa17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQgrZ+0y1djOQFJQdjlbLnVhP/HXZRS6bBCR/aTH01z+9FratexwyBojhohIkCYqLI7r+we2R8PwZy2gyo+V/pDk=',
'ctl00$MainContent$hfo1': '1',
'ctl00$MainContent$hfo2': '1',
'ctl00$MainContent$hfo3': '1',
'ctl00$MainContent$hfo4': '1',
'ctl00$MainContent$hfo5': '1',
'ctl00$MainContent$hf1': '0',
'ctl00$MainContent$ASPxButton04': '',
'ctl00$MainContent$ASPxCheckBox1': 'C',
'ctl00$MainContent$ASPxCheckBox2': 'C',
'ctl00$MainContent$ASPxCheckBox3': 'C',
'ctl00$MainContent$ASPxCheckBox4': 'C',
'ctl00$MainContent$ASPxCheckBox5': 'C',
'DXScript': '1_42,1_75,2_27,2_34,2_40,2_30',
}
scam_data_6 = {
@ -154,11 +135,11 @@ scam_data_6 = {
'__EVENTARGUMENT':
'',
'__VIEWSTATE':
'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',
'__VIEWSTATEGENERATOR':
'A8B80323',
'__EVENTVALIDATION':
'/wEdAAeKAC1bv+nuL6FBliuajDezCa17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQgrZ+0y1djOQFJQdjlbLnVhP/HXZRS6bBCR/aTH01z+9q5qchEPd4P0GcPtCRleS0Yg7xHbLgP7/JC5bnWIdotc=',
'/wEdAAdlS+EcZqZj69lvvVBkOiRdCa17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQgrZ+0y1djOQFJQdjlbLnVhP/HXZRS6bBCR/aTH01z+973RWBoRj4RF1FwPj+fzhc5icNGqW+IuWU2bEn9AL/aY=',
'ctl00$MainContent$hf1':
'0',
'ctl00$MainContent$ASPxButton04':
@ -175,11 +156,11 @@ scam_data_7 = {
'__EVENTARGUMENT':
'',
'__VIEWSTATE':
'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',
'__VIEWSTATEGENERATOR':
'CF2D5825',
'__EVENTVALIDATION':
'/wEdAAaqpXhQufwluAUTPaQSplidCa17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQk/8ddlFLpsEJH9pMfTXP70SYCm5BQ5idngMHkXLpi97Z9CFcqk0022jTWIn6mbxgg==',
'/wEdAAYTgLeYQ3V4kndeUHSWquo6Ca17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQk/8ddlFLpsEJH9pMfTXP70wBKf5MD1akDFJqS3LfygoxOOVAi0jF2+vnJgHH88fMA==',
'ctl00$MainContent$hfo1':
'1',
'ctl00$MainContent$hfo2':
@ -212,11 +193,11 @@ scam_data_8 = {
'__EVENTARGUMENT':
'',
'__VIEWSTATE':
'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',
'__VIEWSTATEGENERATOR':
'CF2D5825',
'__EVENTVALIDATION':
'/wEdAAbOganUmKTcid6lecdugbZeCa17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQk/8ddlFLpsEJH9pMfTXP71odHxCsKWZSupzts5amB2tWturFbaaH48T5Z5wjC8oXA==',
'/wEdAAaUbQPKAdufTQ04sUCgOXlBCa17vhDUriBurXCsNy590WMU/f8RYiHeDshdCQG6KXsl+bxYKsnWKi1oDF+SPbsJHS3vs9PY66cqRnl9zzvdQk/8ddlFLpsEJH9pMfTXP71ur+Y+oF2Zsquq24c9b1JAxSSvpvsTPleGTez5Ph8LwA==',
'ctl00$MainContent$hf1':
'0',
'ctl00$MainContent$ASPxButton04':