Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как получть нужный url href cо страницы другого домена (https://javascript.ru/forum/misc/78684-kak-polucht-nuzhnyjj-url-href-co-stranicy-drugogo-domena.html)

basil.veber 24.10.2019 16:25

laimas, 50 на 50 )). В консоли ошибок нет. Запросы получают ответ 200 что все ок. Но ссылка не передается при открытии браузером новой вкладки, после клика по кнопке. В адресной строке просто about:blank

laimas 24.10.2019 16:28

На время сделать так:

console.log(loadedDocument)
//button.onclick = () => open(loadedDocument.querySelector('a.home-link').href)


Точно все есть в консоли во время когда вы жмахаете кнопку?

laimas 24.10.2019 16:33

Ну и причина 50/50?

Добавьте перед button.onclick ..... эту строку button.disabled = false;, а самой кнопке пропишите атрибут disabled.

PS. Либо не выставляйте изначально кнопку, а добавляйте ее динамически:

//что изменить
.then(loadedDocument => {
    let button = document.createElement('button');
    button.textContent = 'Открыть';
    document.body.appendChild(button); //во что-то вставляем кнопку, здесь в конец всех элементов тела документа
    button.onclick = () => open(loadedDocument.querySelector('a.link-title').href);
}).catch(error => {
    console.log('Sorry');
});

//а эту строку удалить
const button = document.getElementById("my-button");

basil.veber 24.10.2019 19:06

Цитата:

PS. Либо не выставляйте изначально кнопку, а добавляйте ее динамически:
Ситуация следующая:
При querySelector('a.link-title').href); - при клике по кнопке это

При querySelectorAll('a.link-title').href); - новая вкладка опять с about:blank

Класс у ссылки единственный на странице. Не понимаю почему не находит даже с указателями [0-10]

laimas 24.10.2019 19:17

Выполнить пост #12 и посмотреть что вы получаете, есть ли там ссылки нужные, мне же не ведомо что за страницу вы насилуете.

Malleys 24.10.2019 19:46

Цитата:

Сообщение от basil.veber
Запросы получают ответ 200 что все ок. Но ссылка не передается при открытии браузером новой вкладки, после клика по кнопке.

Посмотрите, что скачало, может на том сайте выполнен хитрый алгоритм по предотвращению скачивания (и вам показывают капчу), может там переход на другую страницу, может там ссылка внутри <iframe>, может эти ссылки создаются программно, мой скрипт находит ссылку именно в исходном коде страницы, так как если бы вы нажали Ctrl+U, чтобы посмотреть исходный код.

Обратите внимание на то, что мой код скачивает исходный код страницы, и в нём ищет ссылку, если вам нужен поиск ссылки в отрисованной странице, где выполнены все скрипты, то вам стоит использовать, например, puppeteer

(Если вы делаете что-то исключительно для себя, то может вам поможет браузерное расширение Tampermonkey)

Цитата:

Сообщение от basil.veber
При querySelector('a.link-title').href); - при клике по кнопке это

Если document.links[1] не содержит ссылки, то querySelector('a.link-title') и подавно ничего не найдёт. Соответственно чтение свойства href у не существующего объекта вызовет ошибку! document.links содержит список всех ссылок на странице.

Цитата:

Сообщение от basil.veber
При querySelectorAll('a.link-title').href); - новая вкладка опять с about:blank

querySelectorAll('a.link-title') возвращает список элементов, даже если их нет (список пустой), вы читаете свойство href у самого списка элементов. Поэтому ошибки нет. Но у списка элементов нет свойства href, поэтому вы получаете undefined, который у вас открывается в виде about:blank

Вот как!

basil.veber 24.10.2019 21:15

Цитата:

Выполнить пост #12 и посмотреть что вы получаете, есть ли там ссылки нужные
Вот оно что:

По не ведомой мне причине код не весь. Хотя пробовал на пхп тянуть ссылку, то все ок. Но в связи с некоторыми "Но", пхп не подходит так как сайт имеет некоторые региональные особенности.

laimas 24.10.2019 21:22

Цитата:

Сообщение от basil.veber
сайт имеет некоторые региональные особенности

Интересно как региональные особенности могут влиять на серверный язык. Какой-то язык же есть на сервере, делайте запрос сервером и отдавайте клиенту.

Malleys 24.10.2019 22:05

Цитата:

Сообщение от laimas
Интересно как региональные особенности могут влиять на серверный язык.

Так, что сервер ответит, например, на другом языке. (Читай про content negotiation)

Цитата:

Сообщение от basil.veber
сайт имеет некоторые региональные особенности.

Т. е. на сервере не получается отправить точно такой же запрос, какой был запрошен? Может не работать из-за геолокации. Так что за адрес? Было бы хорошо, если вы это указали, тогда можно указать конкретное решение хацкерской проблемы!

laimas, попросите адрес атакуемой страницы!

ЕЩЁ
Цитата:

Сообщение от laimas
Какой-то язык же есть на сервере, делайте запрос сервером

Так оно уже и так делается через сервер, интересно в чём отличия!

laimas 25.10.2019 06:12

Цитата:

Сообщение от Malleys
интересно в чём отличия

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


Часовой пояс GMT +3, время: 04:13.