scrapy_python | Unsorted

Telegram-канал scrapy_python - Scrapy

1045

Чат создан чтобы делиться опытом о Scrapy/Python и другими парсинг технологиями. Вежливость и уважение к другим участникам группы. Троллинг не приветствуется. FAQ: https://github.com/bulatbulat48/ru-scrapy-python Работа: t.me/scrapy_jobs

Subscribe to a channel

Scrapy

Ошибочка в form2request - откатился на FormRequest
https://github.com/scrapy/form2request/issues/12

Читать полностью…

Scrapy

Тот раз спрашивал тут кто знает норм библу обхода CF и просто имитацию барузера. Нашел такую пропатчиный веб драйвер. Вдруг кому то понадобится. Мои потребности вроде закрывает. https://github.com/CloakHQ/cloakbrowser

Читать полностью…

Scrapy

Ну смотри, давай дальше разгонять. Я прекрасно понимаю что fingerprinting переезжает в QUIC/TLS ClientHello ) Идея в том, что в этом случае разница между Linux\Windows сигнатурами менее ощутима (если это не так, то поправьте меня). И я не собираюсь подделывать сетевой стек, я думал использовать сетевой стек Хрома. Основная задача уменьшить лики при утечке платформы.

То что Cloudflare и крупные WAF смотрят не только L3/L4 я понимаю прекрасно, поэтому я в начале написал что этот вопрос выношу за скобки, что бы решать проблему поэтапно.

первый контакт может идти по TCP/TLS
сервер может отдать Alt-Svc
потом браузер переходит на HTTP/3

но это не “магия — сразу в QUIC всегда”.

да нет же, магия. (--origin-to-force-quic-on) Ну т.е. ты просто прогреваешь кэш браузера заранее и заранее заносишь туда данные о том, что целевой ресурс работает по http3. И все, первого стука через TCP/TLS что бы это обсудить не будет.

если ты пишешь свой клиент или юзаешь нестандартный стек:

Ну так не будет никакого клиента и нестандартного сетевого стека. Наоборот все стандартно, за исключением отсутсвия первого контакта по TCP.. не могу пока сказать критично это или нет, я не пробовал.

HTTP/3 ecosystem моложе
fingerprint DB местами менее богатые
Но крупные антиботы (Cloudflare, Akamai, PerimeterX и т.д.) давно это умеют.
И если у тебя:
датацентр IP
странный pacing
не-хромовый QPACK
weird transport params



Тоже самое, все хромовое будет. Все эти претензии опровергаются

Иногда QUIC даже хуже маскируется, если стек не идентичен браузеру.

Ну камон.. а через TCP не хуже маскируешься, если стек не идентичен браузеру?

Читать полностью…

Scrapy

Привет всем. Пытаюсь разобраться в методах определения WAFами платформы, что бы она не текла нигде. Начал с L3-L4 уровней OSI (js челенджи и application слой пока вообще за скобками). Ничего вообще в этом не пониманию, поэтому сильно не хейтите.

Мне чат жпт напел, что основные проблемы и лики происходят при хендшейке по TCP и именно на этом этапе крупные игроки типо CloudFlare и прочих сверяют сигнатуры с их известной базой отпечатков по всяким Ja4, window sizе и т.д. И я разгоняю идею о том, что можно же этап TCP хендшейка полностью миновать, если использовать QUIC и сразу перескочить на L7 где все это колдунство происходит на application level и где совершенно другие уже сигнатуры, отпечатки и где различия между платформами меньше (но это не точно). Даже тот самый хром может начать общаться с сервером сразу через QUIC с первого пакета, если сервер поддерживает http3. Эту вообще идею имеет смысл разгонять или это фигня полная и я вообще не понимаю как это работает?

Я подумал что может у WAFов наборов отпечатков http3 меньше и с учетом что по TCP мы с сервером не контачим вообще, то может выглядим человечнее? Спасибо заранее за ответ

Читать полностью…

Scrapy

буду отстаивать FormRequest в scrapy/scrapy. Правда там ишью - мильон

Читать полностью…

Scrapy

да нет, напишу. Только вот в сомнении в scrapy/scrapy или scrapy/form2request?

Читать полностью…

Scrapy

Как по мне, так логичнее то, о чем kmike в PR говорил - логика во внешней библиотеке, но оставить хелпер FormRequest в API. У меня вот, например, еще и самописный GraphQLRequest хелпер часто в ходу.

Читать полностью…

Scrapy

Cпорное решение убрать FormRequest. Он вроде как логичен, исходя из того, что есть JsonRequest.

Читать полностью…

Scrapy

Вот этим
https://github.com/divtiply/scrapy-curl-cffi

Читать полностью…

Scrapy

у клаудфлаера несколько уровней защиты, параметры браузера, фингер принты, и IP, прокси тоже нужны быть не в блэк листе, ну или подключи антикапчу

Читать полностью…

Scrapy

быстро это не бывает

Читать полностью…

Scrapy

Всмысле ссылку? Да на любой сайт с CF. Не принципиально. У меня таких сайтов 100. Просто нужен html. Думал может библиотеки какие то есть. А там сам поизучаю

Читать полностью…

Scrapy

Нужен просто html. Есть парсер новостных сайтов, все парсит нормально. Все работает отлично вот нужны заблченные сайт теперь

Читать полностью…

Scrapy

Народ как вы обходите клаудфаер. Я вот пробую через camoufox. Тяжелая какая то. Как будто не стабильная. Делаю что то типа аналога у скрапи сплэш но на плейрайте через фаст апи

Читать полностью…

Scrapy

На странице это выглядит так: блок с картинкой и заголовком, а в нём таблица с конкретными товарами.
И в каждый товар нужно добавить эту картинку, а название сконкатенировать с заголовком блока

Читать полностью…

Scrapy

https://github.com/scrapy/scrapy/issues/7561

Читать полностью…

Scrapy

Просто хочется последовательно подходить к решению вопроса, сначала на уровне TLS утечки минимизировать, а потом уже на уровне JS. Потому что если ты заявляешь что ты приличный windows пользователь, а сервер видит что ты linux в докере крутишь, то и смысла в работе с другими отпечатками на уровнях выше нет. Сначала носки, потом ботинки. Не наоборот

Читать полностью…

Scrapy

мне gpt напел:

Коротко: идея в таком виде неверная или как минимум сильно упрощённая.
Разберу по пунктам.
QUIC не “обходит” fingerprinting
Да, TCP handshake нет, потому что QUIC работает поверх UDP.
Но это не значит, что fingerprinting исчезает. Он просто переезжает в QUIC/TLS ClientHello.
У QUIC есть свои отпечатки:
TLS cipher suites
extensions
transport parameters
packet number behavior
ACK timing
ALPN (h3)
version negotiation
даже особенности реализации стека
То есть вместо JA4 TCP/TLS появляются JA4-QUIC / TLS fingerprints и прочие сигнатуры.
Cloudflare и крупные WAF смотрят не только L3/L4 Это вообще главный misconception.
Они смотрят:
TCP/QUIC fingerprint
TLS fingerprint
HTTP/2 / HTTP/3 framing behavior
Header order
Pseudo-headers (:authority, :path)
HPACK/QPACK особенности
Timing
Cookie behavior
Retry logic
IP reputation
ASN
Request sequencing
Browser challenge telemetry
JS signals
То есть fingerprint — это не “TCP и всё”, это куча сигналов.
Chrome не всегда “сразу QUIC с первого пакета” Тут нюанс.
Обычно:
первый контакт может идти по TCP/TLS
сервер может отдать Alt-Svc
потом браузер переходит на HTTP/3
Есть механизмы вроде preloaded knowledge / cached Alt-Svc, но это не “магия — сразу в QUIC всегда”.
HTTP/3 fingerprinting иногда даже проще заметить Потому что:
если ты пишешь свой клиент или юзаешь нестандартный стек:
quiche
aioquic
lsquic
ngtcp2
то они часто палятся очень характерно.
Реальный Chrome/BoringSSL + сетевое поведение — это не только “отправить h3”.
“Набор отпечатков HTTP/3 меньше” — частично правда, но вывод неправильный Да:
HTTP/3 ecosystem моложе
fingerprint DB местами менее богатые
Но крупные антиботы (Cloudflare, Akamai, PerimeterX и т.д.) давно это умеют.
И если у тебя:
датацентр IP
странный pacing
не-хромовый QPACK
weird transport params
то ты выделяешься сильнее, а не слабее.



Где ChatGPT тебе напел ерунду
Вот это:
“основные лики происходят при TCP handshake”
неправда.
TCP window size / MSS / options — это только один маленький сигнал.
В современных антиботах чаще важнее:
TLS + HTTP behavior + JS telemetry + reputation
чем чистый TCP fingerprint.



Итог
Твоя идея:
“убрать TCP → стать человечнее”
не работает сама по себе.
Правильнее:
“убрать один класс сигналов, но получить другой”
Иногда QUIC даже хуже маскируется, если стек не идентичен браузеру.
Так что это не фигня как мысль, но вывод “QUIC поможет обойти fingerprinting” — слишком оптимистичный и обычно неверный.

Читать полностью…

Scrapy

form2request именно про хтлм формы

Читать полностью…

Scrapy

а это смотря что вы хотите получить

Читать полностью…

Scrapy

А еще у нас частый случай, когда данные формы вручную шлют, без извлечения полей из формы в хтмл, а "form2request() requires an HTML form object". Кодировать body и выставлять хэдеры вручную - утомительно.

Читать полностью…

Scrapy

JsonRequest просто json.dumps() делает, а в FormRequest куча логики

Читать полностью…

Scrapy

2.16.0: https://docs.scrapy.org/en/latest/news.html#scrapy-2-16-0-2026-05-19

Читать полностью…

Scrapy

Всем привет! Кто-то занимался парсингом linkedin? Напиши в лс где вы брали Аккаунты для парсинга пожалуйста!

Читать полностью…

Scrapy

Понятно, посмотрю может с camoufox чет выйдеь

Читать полностью…

Scrapy

все библиотеки рендерят челлендж, большинство браузером

Читать полностью…

Scrapy

ну скинь ссылку гляну что у тебя там

Читать полностью…

Scrapy

попробуй найти origin ip сайта

Читать полностью…

Scrapy

то есть только в названии проблема?

Читать полностью…

Scrapy

Товарищи, а вот как правильнее разбирать вложенные элементы?
Пока у меня вот такой код:

    for block in response.css('div.product_block'):
block_loader = GoodItemLoaderDefault(item=dict(), selector=block, urljoin=urljoin)
block_loader.add_css('url_item', 'div.product_block_img > a::attr(href)')
block_loader.add_css('url_img', 'div.product_block_img img::attr(src)')
block_item = block_loader.load_item()
for good in block.css('table.variants tr'):
n += 1
loader = GoodItemLoaderDefault(item=dict(block_item), selector=good)
loader.add_css('title', 'td.name::text')
loader.add_css('artikul', 'td.name::text', re=re_art)
loader.add_css('price', 'td.price::text', re=re_prace)
loader.add_css('valuta', 'td.price::text', re=re_valuta)
loader.add_css(
'code', 'td.to_cart input[type="hidden"]::attr(name)', re=re_code)
item = loader.load_item()

И вроде напрашивается .nested_* - но нельзя.
Может ввести для подобного использования какое нибудь .nested_copy_* ?

Читать полностью…
Subscribe to a channel