Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
365 / 124 / 22
Регистрация: 08.01.2015
Сообщений: 1,418
Записей в блоге: 2

Проблема с парсером: как переделать ссылки

11.02.2022, 16:10. Показов 441. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю парсер сайтов. Через curl. В итоге, в адресной строке браузера получается mysite.ru/parser.php, а в ссылках на спарсенной странице - anothersite.com/... . Получается, при переходе по ссылкам я буду попадать именно на спарсенный сайт, а не на свой. А как сделать так, чтобы ссылки тоже заменялись на "мои"? Т.е. чтобы вместо
anothersite.com/link.html
было
mysite.com/link.html ?
Но, чтобы парсер при этом открывал ссылку anothersite.com/link.html.

Насколько я понял, curl такой замены самостоятельно не делает. Настроек подобных я что-то не нашел. Т.е. выходит, выход единственный - заменять ссылки вручную (регулярными выражениями, к примеру)? Но если они формируются средствами JS, тогда как?
И еще, пока тестирую на протоколе НТТР. С HTTPS проблем не возникнет?

Добавлено через 4 часа 46 минут
Или, может добавить на страницу JS-скрипт, который будет перехватывать переход по ссылкам, заменяя домен на mysite.ru. Пока, правда, не пойму, как делать такой перехват. Назначить дополнительные обработчики кликов?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.02.2022, 16:10
Ответы с готовыми решениями:

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

Проблема с парсером
Надо написать парсер на php, с яндексом работает нормально, но youtube.com, например не парсит. код: include 'curl_query.php'; ...

Проблема с парсером
Здравствуйте, помогите пожалуйста с парсером. Нужно с сайта http://spys.one/free-proxy-list/RU/ спарсить proxy сервера получается...

2
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
11.02.2022, 16:29
Я бы наверное на JS делал. Если на JQuery, то что-то вроде:

JavaScript
1
2
3
4
5
6
7
8
$('a').on('click', function(e) {
    e.preventDefault()
    
    let href = $(this).attr('href')
    ... // Заменяем домен в URl, если указан
    
    window.location = href
})
0
365 / 124 / 22
Регистрация: 08.01.2015
Сообщений: 1,418
Записей в блоге: 2
11.02.2022, 21:18  [ТС]
Думаю примерно такой алгоритм действий (на сервере):
1. Вставляем в раздел <head>...</head> в самое начало тег
HTML5
1
<base href="mysite.ru/" />
2. Удаляем из всех href, src строку anothersite.com вместе с протоколом, двоеточием и слешами (если они есть). Т.е. теги типа a, link, img, script и т.д. получат относительные (бездоменные) URL. При этом браузер, когда будет их скачивать, подставит вместо домена то, что прописано в теге <base... />
3. Открываем сессию сервера. Посылаем QOOKIES в браузер и сохраняем их в сессии сервера.
4. Отправляем получившуюся строку (п.1, 2) в браузер.
При этом, если от браузера вскоре пойдут запросы на скачивание ресурсов, то сервер их узнает и перенаправит в curl. И ресурсы корректно скачаются. Т.е. со статическими ссылками проблем не должно быть.

Однако, остается открытым вопрос: как быть, если ссылка формируется динамически, уже на клиенте? Да еще не сразу, а через время. Можно, конечно, просмотреть DOM и там уже средствами JS заменить anothersite.com в ссылках на mysite.ru. Но ведь ссылка может формироваться динамически, в том числе, и как результат какого-то события. Например, после клика где-то. Т.е. уже после загрузки страницы и отработки скрипта, заменяющего доменное имя.

Добавлено через 11 минут
Цитата Сообщение от Jodah Посмотреть сообщение
$('a').on('click', function(e) {
Если устанавливать этот обработчик последним (т.е. уже после того, как установлены другие обработчики клика, предусмотренные разработчиком страницы), то он и отработает в последнюю очередь (множественные обработчики). Правда, если только он не будет установлен непосредственно в теге в виде <div onclick="..."> или в виде div.onclick="...". В этих случаях уже не удастся установить дополнительный обработчик. Разве что, проксирование какое-нибудь применить.

Добавлено через 21 минуту
В итоге, вначале браузер все же попытается вначале скачать ресурс с anothersite.com (согласно командам ранее установленных обработчиков). А уже потом сработает наш (последний) обработчик, который отправит запрос на скачивание того же ресурса на mysite.ru. Т.е. получается как-то не очень. И не универсально.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.02.2022, 21:18
Помогаю со студенческими работами здесь

Проблема с парсером
В общем проблема в следующем. Есть сайт со списком тв программ. Парсить оттуда список не представляет сложности но список не совсем...

Проблема с парсером
Здравствуйте, возникла необходимость получить некоторые данные с сайта. В программировании на уровне Привет, Мир. Но задачу нужно было...

Проблема с парсером json
доброго времени суток, форумчане! проблема такого рода - пишу программу для работы с апи окдеск и наткнулся на новый рубеж в виде...

Проблема с парсером php - curl
Нашел квот такой код, парсинга информации с сайта. С использованием проксей. Все пашет, если пользую soks5 Если подключаю http прокси, то...

Как работать с парсером?
Привет. У меня есть написанный , рабочий парсер И метод аппроксимации функции, работающий со статичной функцией, которую передаю функцией...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru