программно нажать кнопку ввода на другой веб-странице? - PullRequest
5 голосов
/ 14 июля 2011

Я знаю, что было несколько похожих вопросов, но я не видел ответа на свои конкретные вопросы: есть ли способ нажать кнопку на отдельно запущенной веб-странице? Например, я запускаю другую веб-страницу через:

  • <a href="x" target="y"> или
  • window.open()

Могу ли я затем нажать кнопку ввода на этой запущенной веб-странице программно?

Ответы [ 5 ]

2 голосов
/ 14 июля 2011

Это метод, используемый некоторыми хакерскими инъекционными атаками. По сути, вы можете добавить javascript в строку запроса, которая может присоединиться к DOM, изменить источник изображения или файл SWF или просто запустить при загрузке страницы; пример здесь и пример здесь .

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

Но так как это нехорошо, я предполагаю, что у вас есть веские причины, по которым вы не можете коснуться кода на принимающей странице, но хотите изменить его поведение?

2 голосов
/ 14 июля 2011

Если страница не находится под вашим собственным контролем или находится в том же домене, то нет, это невозможно.Это будет межсайтовый скриптинг, и во всех браузерах предусмотрены «песочницы» для предотвращения подобных ситуаций.Почему вы пытаетесь программно нажать кнопку на странице, которую вы также программно открываете?

2 голосов
/ 14 июля 2011

Да. Когда вы сделаете window.open, он вернет вам объект окна. Var win = window.open (); win.fnSubmit (); Предполагая, что fnSubmit - это функция на другой странице, которая выполняет щелчок. и оба pqges в одном домене.

0 голосов
/ 14 июля 2011

Опрос говорит ... возможно. Если вы выполнили домашнее задание, вы, вероятно, сможете установить связь внутри одного и того же поддоменов. От этого становится все сложнее - у меня никогда не было постоянной поддержки кросс-браузерного субдомена для манипулирования JavaScript между двумя окнами (или фреймами).

Тем не менее, если они - одна и та же область, это вопрос спуска в нее. Если у меня есть:

  • Окно A открывает окно B
  • Окно B объявляет var winBVar
  • Окно A может получить доступ к winBVar после и только после того, как объявлена ​​эта переменная (например, вам все еще нужно дождаться document.onload и т. Д.)
0 голосов
/ 14 июля 2011

Вы можете нажать на любой элемент, который вы можете выбрать.

Вы можете выбирать только те элементы в окнах, к которым у вас есть привилегии безопасности.

У вас есть права на собственное окно и права на окна в том же домене и безопасности.

Для доступа к элементу вам понадобится объект окна, который возвращается из window.open

var newWin = window.open(siteYouHaveAccessTo);
newWin.document.getElementById('foo').click();

Если вы пытаетесь нажать на кнопку Search на www.google.com, значит вы СОЛ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...