Как с помощью расширения получить "правильную" ссылку?
Недавно начал пробовать писать расширения для хрома и в процессе появляется много непонятного. Вот например:
С помощью расширения я хочу вывести в консоль ссылку которую мне выдал гугл-поиск. В поиск вбиваем любое слово например "мяч" и выводим в консоль первую ссылку результата поиска вот код манифеста: { "name": "test", "description": "test", "version": "0.1", "manifest_version": 2, "content_scripts": [{ "matches": [ "https://*/*" ], "js": ["jquery.js", "script.js"] }] } а вот код файла "script.js": $(document).ready( function(){ var val = $("h3.r:first").children("a").attr("href"); console.log(val) }); Переменная val возвращает значение "_https://ru.wikipedia.org/wiki/%D0%9C%D1%8F%D1%87", а как мне получить ссылку такого типа (ее мы получаем когда на ссылке нажать правой кнопкой мыши и в контекстном меню выбрать "копировать адрес ссылки") "_https://www.google.com.ua/url?sa=t&rct=j&q=&esrc=s&source=web&cd=7&cad=rja&u act=8&ved=0CDEQFjAG&url=https%3A%2F%2Fru.wikipedia .org%2Fwiki%2F%25D0%259C%25D1%258F%25D1%2587&ei=AH iaVYLuFOOfyAPEpYEg&usg=AFQjCNG1S886FzPJoRVjYVi8k3g MRYR-KA&sig2=M4k2huNZjbmrUouGQwtrlA&bvm=bv.96952980,d.b GQ"? |
ddos1, гугл подменяет ссылку по mousedown(это прекрасно видно в инспекторе), соответственно надо либо тригернуть это событие, либо напрямую использовать гугло-функцию rwt.
(кстати я у себя её юзерскриптом занулил давно, нафиг мне лишний лаг при переходах:)) $(document).ready( function(){ var a = $("h3.r:first").children("a")[0]; a.onmousedown(); console.log(a.href) }); |
Спасибо за разъяснение.
У меня выдает ошибку "Uncaught TypeError: a.onmousedown is not a function"? как это исправить? |
Возможно какието секурные ограничение песочница для расширений.
Попробуй так: $(document).ready( function(){ var val = $("h3.r:first").children("a").trigger("mousedown").prop("href"); console.log(val) }); Если не поможет - значит гугли доступ к функциям и событиям страницы из расширения. |
Говорят что если гугля обильно осыпАть запросами, из него вылезет капча.
|
Все равно выдает ошибку: "Uncaught TypeError: $(...).children(...).trigger(...).prop is not a function"
Я попробовал написать вместо .prop("href") так: .attr("href") после этого ошибка исчезла, но в консоль возвращается обычная ссылка. И кстати, Aetae, расскажите по-подробнее как вы эту функцию (rwt) у себя занулили? |
Цитата:
Ну, варианты могут быть. Например выщелкать бабосы у конкурента, или типа подменить реф на свой, типа гугля не знает про такие финты ушами. Или зачем? |
Насколько я понял никак нельзя выполнить мою задумку из-за ограничений из расширения я никак не получу доступ к скрипту другого сайта.
|
В firefox можно получить доступ к "небезопасному контенту" с помощью wrappedJSObject, погугли аналоги для chrome.
Цитата:
// ==UserScript== // @name fuck google redirect // @namespace all // @include [url]https://www.google.ru/*[/url] // @include [url]https://www.google.com/*[/url] // @include [url]https://google.ru/*[/url] // @include [url]https://google.com/*[/url] // @version 1 // @grant none // ==/UserScript== window.onload = function(){ unsafeWindow.rwt = function(){} }; |
Aetae, у меня почему-то этот скрипт не работает( специально скачал и установил firefox и дополнение Greasemonkey, установил скрипт но гугл все равно редиректит
|
Часовой пояс GMT +3, время: 05:37. |