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

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

11.02.2022, 16:10. Показов 435. Ответов 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,904
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
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru