• Как правильно составить sql запрос?

    rozhnev
    @rozhnev Куратор тега SQL
    Fullstack programmer, DBA, медленно, дорого
    Например так:
    select * from test 
    join (
    	select "hash" from test where "on" order by random() limit 1
    ) t on t.hash = test.hash;


    PostgreSQL online fiddle
    Ответ написан
    1 комментарий
  • Что такое self в Python?

    @olegshv
    SysAdmin
    Объяснение self в python:

    dog‎: у котов внутри есть мурчалка
    dog‎: она реализована для всех котов в классе кот
    ‎dog‎: в объекте кот надо как то вызвать метод мурчало у класса кот
    ‎dog‎: как ты это сделаешь?
    dog‎: кот.мурчало()
    ‎dog‎: ежели ты вызовешь кот.мурчало(), муркнут сразу все коты на свете
    ‎dog‎: а ежели ты вызовешь self.мурчало(), муркнет только тот кот, на которого указывает self
    Ответ написан
    5 комментариев
  • Как steam может идентифицировать парсер?

    Jump
    @Jump
    Системный администратор со стажем.
    Вариантов - сотни.
    Идентификация по IP адресу это самая популярная, и самая неточная. Один и тот же юзер может заходить с разных адресов, с одного адреса могут ходить сотни юзеров.
    Кроме IP есть еще такие вещи как информация о системе пользователя - установленные драйвера, софт, системные настройки, разрешение экрана. В общем любая информация к которой имеет доступ браузер.
    Каждый из таких идентификаторов в общем то не имеет смысла - версию браузера можно подделать, и разрешение экрана, и прочие вещи. А вот в сумме эта информация дает достаточно уникальный идентификатор пользователя.
    Так же нередко используются паттерны поведения пользователя - нормальнй пользователь и бот действуют совершенно по разному. Порядок обхода страниц, паузы на просмотр страницы, перемещения мыши в процессе - у бота все это будет заметно отличаться от реального пользователя.
    Многие сервисы сами регулярно обновляют список доступных публичных прокси - и если кто-то заходит к ним с адреса публичного прокси сразу банят.
    Ответ написан
    4 комментария
  • Python requests как правильно работать с proxy?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Во-первых:
    proxies = {
        'http': 'xxx.xx.xxx.xx:xxxx',
        'https': 'xxx.xx.xxx.xx:xxxx'
    }

    Во-вторых: вы заменяете User-Agent? По стандарту он 'python-requests' - многие сайты блокируют.
    В-третьих: если берете прокси из общего доступа, то он уже может быть заблокированным (на самом деле это довольно часто). Берите сразу большое кол-во прокси и пробуйте перебирать их примерно так:
    proxies = []
    for proxy in proxies:
        response = requests.get(proxies=proxy)
        if response.status_code == requests.codes['ok']:
            break
    
    response.text
    Ответ написан