Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.07.2015, 15:56
Новичок на форуме
Отправить личное сообщение для ddos1 Посмотреть профиль Найти все сообщения от ddos1
 
Регистрация: 25.06.2015
Сообщений: 7

Как с помощью расширения получить "правильную" ссылку?
Недавно начал пробовать писать расширения для хрома и в процессе появляется много непонятного. Вот например:
С помощью расширения я хочу вывести в консоль ссылку которую мне выдал гугл-поиск. В поиск вбиваем любое слово например "мяч" и выводим в консоль первую ссылку результата поиска
вот код манифеста:
{
	"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"?
Ответить с цитированием
  #2 (permalink)  
Старый 06.07.2015, 17:48
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

ddos1, гугл подменяет ссылку по mousedown(это прекрасно видно в инспекторе), соответственно надо либо тригернуть это событие, либо напрямую использовать гугло-функцию rwt.
(кстати я у себя её юзерскриптом занулил давно, нафиг мне лишний лаг при переходах)

$(document).ready( function(){
  var a = $("h3.r:first").children("a")[0];
  a.onmousedown();
  console.log(a.href)
});
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 06.07.2015, 20:06
Новичок на форуме
Отправить личное сообщение для ddos1 Посмотреть профиль Найти все сообщения от ddos1
 
Регистрация: 25.06.2015
Сообщений: 7

Спасибо за разъяснение.
У меня выдает ошибку "Uncaught TypeError: a.onmousedown is not a function"? как это исправить?

Последний раз редактировалось ddos1, 06.07.2015 в 20:17.
Ответить с цитированием
  #4 (permalink)  
Старый 07.07.2015, 00:20
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

Возможно какието секурные ограничение песочница для расширений.

Попробуй так:
$(document).ready( function(){
  var val = $("h3.r:first").children("a").trigger("mousedown").prop("href");
  console.log(val)
});

Если не поможет - значит гугли доступ к функциям и событиям страницы из расширения.
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 07.07.2015, 05:22
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Говорят что если гугля обильно осыпАть запросами, из него вылезет капча.
Ответить с цитированием
  #6 (permalink)  
Старый 07.07.2015, 09:40
Новичок на форуме
Отправить личное сообщение для ddos1 Посмотреть профиль Найти все сообщения от ddos1
 
Регистрация: 25.06.2015
Сообщений: 7

Все равно выдает ошибку: "Uncaught TypeError: $(...).children(...).trigger(...).prop is not a function"
Я попробовал написать вместо
.prop("href")

так:
.attr("href")

после этого ошибка исчезла, но в консоль возвращается обычная ссылка.
И кстати, Aetae, расскажите по-подробнее как вы эту функцию (rwt) у себя занулили?
Ответить с цитированием
  #7 (permalink)  
Старый 07.07.2015, 10:46
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от ddos1
а как мне получить ссылку такого типа
Мы ее "получаем" всегда при щелчке в выдаче. Вам-то оно зачем? Вы же получили нормальную ссылку без редиректа.

Ну, варианты могут быть. Например выщелкать бабосы у конкурента, или типа подменить реф на свой, типа гугля не знает про такие финты ушами. Или зачем?
Ответить с цитированием
  #8 (permalink)  
Старый 07.07.2015, 21:27
Новичок на форуме
Отправить личное сообщение для ddos1 Посмотреть профиль Найти все сообщения от ddos1
 
Регистрация: 25.06.2015
Сообщений: 7

Насколько я понял никак нельзя выполнить мою задумку из-за ограничений из расширения я никак не получу доступ к скрипту другого сайта.
Ответить с цитированием
  #9 (permalink)  
Старый 08.07.2015, 03:13
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,587

В firefox можно получить доступ к "небезопасному контенту" с помощью wrappedJSObject, погугли аналоги для chrome.
Сообщение от ddos1 Посмотреть сообщение
И кстати, Aetae, расскажите по-подробнее как вы эту функцию (rwt) у себя занулили?
Greasemonkey юзерскрипт. Нет ничго проще:
// ==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(){}
};
__________________
29375, 35
Ответить с цитированием
  #10 (permalink)  
Старый 10.07.2015, 15:29
Новичок на форуме
Отправить личное сообщение для ddos1 Посмотреть профиль Найти все сообщения от ddos1
 
Регистрация: 25.06.2015
Сообщений: 7

Aetae, у меня почему-то этот скрипт не работает( специально скачал и установил firefox и дополнение Greasemonkey, установил скрипт но гугл все равно редиректит
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
history.pushState и как получить StateObj aphextwin AJAX и COMET 4 15.05.2012 18:46
Как получить значение переменной из callback функции? Хиросим AJAX и COMET 5 24.04.2012 09:32
Как сделать некликабельную ссылку? alexandr_v-vich Events/DOM/Window 16 07.03.2012 17:57
Как с помощью PHP сохранить какие-либо изменения в HTML документе? FirstFrost Работа 6 06.09.2010 16:16
Как с помощью PHP сохранить какие-либо изменения в HTML документе? FirstFrost Общие вопросы Javascript 1 15.07.2010 17:12