С кукиз должна работать программа, которая получает данные из сети Tor, например, в случае парсера это может быть cURL, PHP скрипт, скрипт на Python и так далее.
В статье «Парсинг сайтов: азы, продвинутые техники, сложные случаи» имеется пример работы с кукиз в cURL, а как получить содержимое веб-страницы (HTML код) и кукиз сайта в сети Tor, имена которых заканчиваются на .onion?
Для работы парсера с сетью Tor нужно данные локальной службы Tor (номер порта и «localhost» в качестве IP) указать как прокси для выхода в сеть.
Для нормальной работы с .onion сайтами нужно использовать DNS сервера сети Tor.
В скрипте Python для доступа к сайтам .onion нужно использовать протокол socks5h чтобы включить использование удалённых DNS для преобразование имён хостов в IP, если локальное преобразование DNS не удалось.
Следующий кода он показывает страницу .onion сайта (адрес http://hacking5xcj4mtc63mfjqbshn3c5oa2ns7xgpiyrg2fenl2jd4lgooad.onion) и кукиз:
import requests import json proxies = { 'http': 'socks5h://127.0.0.1:9050', 'https': 'socks5h://127.0.0.1:9050' } session = requests.Session() data = session.get("http://hacking5xcj4mtc63mfjqbshn3c5oa2ns7xgpiyrg2fenl2jd4lgooad.onion",proxies=proxies).text print(data) print(session.cookies)
В качестве сайта используется простой PHP скрипт, который отправляет HTML код и кукиз:
Пример работы кода, который приведён выше — вы можете видеть HTML и кукиз:
Строка
print(session.cookies)
выводит:
< RequestsCookieJar[< Cookie HackWare-cookie=For%20testing%20purpose%20only for hacking5xcj4mtc63mfjqbshn3c5oa2ns7xgpiyrg2fenl2jd4lgooad.onion/ >] >
То есть формат:
< RequestsCookieJar[< Cookie NAME=VALUE for SITE.onion/ >] >
Если print(session.cookies) поменять на
print(session.cookies.get_dict())
то формат будет таким:
{'HackWare-cookie': 'For%20testing%20purpose%20only'}
В принципе, сайты могут шифровать кукиз. Точнее, в любом случае будут присылаться кукиз в формате «ИМЯ=ЗНАЧЕНИЕ». Но ЗНАЧЕНИЕ может быть зашифровано так, что только сайт будет знать, что с этим делать. Но вообще-то пользователю не нужно об этом задумываться — какие кукиз получил, такие браузер и отправляет.
Связанные статьи:
- Как с помощью PhantomJS отправить POST запрос и получить содержимое страницы (68.4%)
- Как создавать диалоговые блоки в интерактивных shell скриптах (50%)
- Как установить JAVA 8 (JDK) последней версии на Linux (50%)
- Как сделать и отправить изменения исходного кода на GitHub (50%)
- Установка Go (компилятора и инструментов) в Linux (50%)
- Как в Bash прочитать ввод пользователя в переменную? (RANDOM - 50%)