• XSS.stack #1 – первый литературный журнал от юзеров форума

Python - задай вопрос получи ответ

Ну так ты установи Kivy, прежде чем его использовать, это внешний модуль, его нет в базовой установке Петона.
а можно вообще KV = писать ?? И ещё я не могу поставить тройной апостроф?
Пожалуйста помогите очень хочется научиться Python
 
а можно вообще KV = писать ?? И ещё я не могу поставить тройной апостроф?
Пожалуйста помогите очень хочется научиться Python
У тебя ошибка же не с кодом связана, а с установкой. Тройной апостроф просто для многострочного текста.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Пожалуйста помогите очень хочется научиться Python
Есть книги, есть ютюб и всякие сайты с онлайн курсами, типа Stepik, хочется - учись.
 
Помогите в чем проблема строчки "KV = '''" Учусь по книге Разработка кросплотформенных приложений.

pip3 install kivy
 
Привет, проблема с Web3py. Только начал с ним работать и пишу скрипт, который принимает в себя адреса контрактов токенов разных сетей, пытается через АБИ создать контракт и получить баланс токена на заданном адрессе. По какой то причине выдает ошибку, мол токен не принадлежит сети или не синхронизирован:
Код:
Could not transact with/call contract function, is contract deployed correctly and chain synced

мой код
Python:
    def getTokenBalance(self, contract):
        decimals = contract.functions.decimals().call()
        balance = contract.functions.balanceOf(self.adress).call()

        return balance / 10 ** decimals
    

    def createTokenContract(self, contractAdress):
        contractAdress = Web3.toChecksumAddress(contractAdress)
        try:
            ERC20_ABI = json.loads('''[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_initialSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"decimals_","type":"uint8"}],"name":"setupDecimals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]''')
            contract = self.web3.eth.contract(contractAdress, abi=ERC20_ABI)
            self.getTokenBalance(contract)
        except Exception as ex:
            print(ex)
            BEP20_ABI = json.loads('''[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]''')
            contract = self.web3.eth.contract(contractAdress, abi=BEP20_ABI)
            self.getTokenBalance(contract)
        return contract

Может в самом ABI проблема? Взяты были с открытых источников, ERC20_ABI со статьи на хабре, а BEP20_ABI с гитхаба. Если проблема в них, подскажите где можно раздобыть подходящие
 
Привет. Скорее всего, вопрос тысячу раз уже был задан, но я не силен в этих модулях для работы с вебом:

Нужен простой чекер. Идея следующая:
На вход читаем файл ссылками, если ответ 200, то записываем ссылку в good, иначе идем далее.

Сейчас вопрос встает в URL, а именно, что где-то ссылка http, а где-то https. Ругается на это. А еще скрипт не идет дальше 10ой строки ссылки.
Python:
import requests


header = {'User-Agent': 'Android: Mozilla/5.0 (Linux; Android 5.0; SM-G920A) AppleWebKit (KHTML, like Gecko) Chrome Mobile Safari (compatible; AdsBot-Google-Mobile; +http://www.google.com/mobile/adsbot.html'}


# Читаем
file = open('file.txt').read().split('\n')
goods = open('good.txt', 'a+')




#Запускаем цикл и перебор данных в файле
for url in file:
    r = requests.head("https://" + url, headers=header)
    print(r.status_code)
#Заканчиваем запись файла
goods.close()
 
Нужен простой чекер
Python:
import requests

header = {'User-Agent': 'Android: Mozilla/5.0 (Linux; Android 5.0; SM-G920A) AppleWebKit (KHTML, like Gecko) Chrome Mobile Safari (compatible; AdsBot-Google-Mobile; +http://www.google.com/mobile/adsbot.html'}

with open(file='file.txt', mode='r') as file_in:
    list_urls = [x.strip() for x in file_in.readlines()]

with open(file='good.txt', mode='a') as goods:
    for url in list_urls:
        r = requests.head(url=f'https://{url}', headers=header)
        if r.status_code == 200:
            goods.write(f'https://{url}\n')

        r = requests.head(url=f'http://{url}', headers=header)
        if r.status_code == 200:
            goods.write(f'http://{url}\n')
 
Пожалуйста, обратите внимание, что пользователь заблокирован
А если экзепшн словишь?
 
Python:
import requests

header = {'User-Agent': 'Android: Mozilla/5.0 (Linux; Android 5.0; SM-G920A) AppleWebKit (KHTML, like Gecko) Chrome Mobile Safari (compatible; AdsBot-Google-Mobile; +http://www.google.com/mobile/adsbot.html'}

with open(file='file.txt', mode='r') as file_in:
    list_urls = [x.strip() for x in file_in.readlines()]

with open(file='good.txt', mode='a') as goods:
    for url in list_urls:
        r = requests.head(url=f'https://{url}', headers=header)
        if r.status_code == 200:
            goods.write(f'https://{url}\n')

        r = requests.head(url=f'http://{url}', headers=header)
        if r.status_code == 200:
            goods.write(f'http://{url}\n')
Спасибо большое. А может еще подскажешь, как обрабатывать такие вещи:
"ConnectionError: ('Connection aborted.', ConnectionResetError(10054, 'Удаленный хост принудительно разорвал существующее подключение', None, 10054, None))"?
 
Спасибо большое. А может еще подскажешь, как обрабатывать такие вещи:
"ConnectionError: ('Connection aborted.', ConnectionResetError(10054, 'Удаленный хост принудительно разорвал существующее подключение', None, 10054, None))"?

Python:
import requests

header = {'User-Agent': 'Android: Mozilla/5.0 (Linux; Android 5.0; SM-G920A) AppleWebKit (KHTML, like Gecko) Chrome Mobile Safari (compatible; AdsBot-Google-Mobile; +http://www.google.com/mobile/adsbot.html'}

with open(file='file.txt', mode='r') as file_in:
    list_urls = [x.strip() for x in file_in.readlines()]

with open(file='good.txt', mode='a') as goods:
    for url in list_urls:
        try:
            r = requests.head(url=f'https://{url}', headers=header)
        except ConnectionError:
            print(f'[-] Ошибка при отправке запроса на url: https://{url}. Пропускаем...')
        else:
            if r.status_code == 200:
                goods.write(f'https://{url}\n')
                print(f'[ОК] Успешно сохранили url в файл: https://{url}')

        try:
            r = requests.head(url=f'http://{url}', headers=header)
        except ConnectionError:
            print(f'[-] Ошибка при отправке запроса на url: http://{url}. Пропускаем...')
        else:
            if r.status_code == 200:
                goods.write(f'http://{url}\n')
                print(f'[ОК] Успешно сохранили url в файл: http://{url}')
 
NewConnectionError, MaxRetryError.


Python:
except NewConnectionError:
            #print(f'[-] Попытка установить соединение была безуспешной на url: https://{url}. Пропускаем...')
        except MaxRetryError:
            print(f'[-] Попытка установить не получен нужный отклик: https://{url}. Пропускаем...')

Таким образом обрабатываю эти экцепты, но ругается что NameError: name 'MaxRetryError' is not defined, при этом знаю что во встроенной иерархии исключений они есть. В чем может быть дело?
 
NewConnectionError, MaxRetryError.


Python:
except NewConnectionError:
            #print(f'[-] Попытка установить соединение была безуспешной на url: https://{url}. Пропускаем...')
        except MaxRetryError:
            print(f'[-] Попытка установить не получен нужный отклик: https://{url}. Пропускаем...')

Таким образом обрабатываю эти экцепты, но ругается что NameError: name 'MaxRetryError' is not defined, при этом знаю что во встроенной иерархии исключений они есть. В чем может быть дело?

Замени в моем коде в обоих случаях
except ConnectionError:
на
except Exception:
 
было бы очень круто, если бы ты пояснил, почему так

Exception - класс выше уровнем, чем ConnectionError. И он "ловит в себя" почти все ошибки:
All built-in, non-system-exiting exceptions are derived from this class. All user-defined exceptions should also be derived from this class.
 
Exception - класс выше уровнем, чем ConnectionError. И он "ловит в себя" почти все ошибки:
Спасибо тебе огромное. Осталось для скорости еще threading в цикл врубить
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Лол, вот
urllib3.exceptions.NewConnectionError или requests.urllib3.exceptions.NewConnectionError
urllib3.exceptions.MaxRetryError или requests.urllib3.exceptions.MaxRetryError
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Python:
import argparse
import os
import sys
import time
from queue import Queue
from threading import RLock, Thread, active_count

from urllib3 import disable_warnings

try:
    import requests
    from user_agent import generate_user_agent
except ImportError as err:
    print(f'[-] {err}:\n\tcmd> pip install requests user_agent')
    sys.exit(input())


LOCK = RLock()
Q_DOMAINS = Queue()
PATH = os.path.dirname(__file__)
RESULTS = os.path.join(PATH, 'RESULTS')
os.makedirs(RESULTS, exist_ok=True)
disable_warnings()


class SomeBullshit:

    @staticmethod
    def _validate(domain: str) -> list:
        return [
            f'https://{domain.split("://")[1]}',
            f'http://{domain.split("://")[1]}'
        ] if '://' in domain else [
            f'https://{domain}',
            f'http://{domain}'
        ]

    def __init__(self, domain):
        self.domains: list = SomeBullshit._validate(domain)

    def check(self):
        headers = {'User-Agent': generate_user_agent()}
        for domain in self.domains:
            try:
                resp = requests.head(
                    domain,
                    headers=headers,
                    verify=False,
                    timeout=5,
                )
                if resp.status_code == 200:
                    return domain
            except Exception as err:
                pass


def msg(string):
    with LOCK:
        print(string)


def save_results(filename, data):
    with LOCK:
        with open(f'{RESULTS}/{filename}', 'a') as f:
            f.write(data + '\n')


def read_file(filename):
    with open(filename, 'r') as f:
        return [
            line.rstrip() for line in f
            if line.rstrip()
        ]


def worker():
    while not Q_DOMAINS.empty():
        domain = Q_DOMAINS.get()
        checker = SomeBullshit(domain)
        domain = checker.check()

        if domain:
            msg(f'[+] Good: {domain}')
            save_results(f'good.txt', domain)


def get_args():
    parser = argparse.ArgumentParser(description='Some bullshit domain checker')
    parser.add_argument(
        '-T', dest='threads',
        default=1, type=int,
        help='Threads number. Default: %(default)s'
    )
    args = parser.parse_args()
    return args


def main():
    args = get_args()
    domains_file = os.path.join(PATH, 'domains.txt')
    if not os.path.exists(domains_file):
        print(f'[-] File not found: {domains_file}')
        sys.exit(input())

    for domain in read_file(domains_file):
        Q_DOMAINS.put(domain)

    for _ in range(args.threads):
        t = Thread(
            target=worker,
            daemon=True,
        ).start()

    try:
        while active_count() > 1:
            time.sleep(1)
        print('[~] All tasks done')
    except KeyboardInterrupt:
        sys.exit('[~] Exit...')


if __name__ == '__main__':
    main()

pip install requests user_agent
дизлайкни мою бабку
 
было бы очень круто, если бы ты пояснил, почему так
Exception ловит ВСЕ ошибки, но если ты знаешь, что там их могут быть несколько например http connection или timeout connection, то смысла нет обрабатывать их все.

Если хочешь посмотреть, что за ошибка, то можешь пирсвоить ей переменную, делаеться это так
Python:
except Exception as e:
    print(e)
 
Exception ловит ВСЕ ошибки

Для достоверности напишу, что все же не все, но большинство. Не в претензию, а для того чтобы не вводить пользователей в заблуждение.
Классы исключений GeneratorExit, SystemExit и KeyboardInterrupt не входят в класс Exception.


2755APp.png
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх