Javascript 为什么PhantomJS显示的是谷歌警报的旧版本?

Javascript 为什么PhantomJS显示的是谷歌警报的旧版本?,javascript,phantomjs,Javascript,Phantomjs,我下载了PhantomJS,因为我需要创建Google Alert RSS源,而它们不提供API 我注意到被访问URL的呈现图像是旧的,因此,没有找到页面的元素来执行所需的操作,例如将“Deliver to”更改为“RSS” 这是什么?缺陷为什么网站与通过浏览器访问不同 我的剧本: var page = require('webpage').create(), isLoaded, controller, isSubmitted = false page.open('ht

我下载了PhantomJS,因为我需要创建Google Alert RSS源,而它们不提供API

我注意到被访问URL的呈现图像是旧的,因此,没有找到页面的元素来执行所需的操作,例如将“Deliver to”更改为“RSS”

这是什么?缺陷为什么网站与通过浏览器访问不同

我的剧本:

var page = require('webpage').create(),
    isLoaded,
    controller,
    isSubmitted = false

page.open('https://www.google.com/alerts', function() {
  page.viewportSize = { width: 1920, height: 1080 }
  page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36'

  isLoaded = true
})

page.onLoadStarted = function() {
  log('Loading page...')
}

page.onLoadFinished = function(status) {
  log('Page has loaded.')

  if (status !== 'success') {
    log('The page has failed to load.')
    exit()
  } else {
    if (isSubmitted) {
      log('Submitted!')
      clear()
      exit()
    } else {
      controller = setInterval(function() {
        if (isLoaded) {
          isLoaded = false
          fillUpInputField('input', 'PhantomJS')
        } else {
          selectRSSOption()
        }
      }, 7000)
    }
  }
}

function exit() {
  phantom.exit()
}

function log(str) {
  console.log(str)
}

function render(name) {
  page.render(name + '.png')
}

function fillUpInputField(selector, query) {
  page.evaluate(function(selector) {
    document.querySelector(selector).focus()
  }, selector)
  page.sendEvent('keypress', query)

  render('fill_up_form.png')
  log('Rendered fill_up_form.png')
}

function selectRSSOption() {
  page.evaluate(function() {
    document.querySelector('.show_options').click()
  })

  render('show_options.png')
  log('Rendered show_options.png')
}

您需要欺骗浏览器useragent,因为默认情况下Google将PhantomJS视为较旧的移动浏览器(也因为默认视口较小)。尝试使用Firefox、Chrome或Edge的现代用户代理

var page = require('webpage').create();

page.viewportSize = { width: 1280, height: 800 };
page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36';

您需要欺骗浏览器useragent,因为默认情况下Google将PhantomJS视为较旧的移动浏览器(也因为默认视口较小)。尝试使用Firefox、Chrome或Edge的现代用户代理

var page = require('webpage').create();

page.viewportSize = { width: 1280, height: 800 };
page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36';

尝试将用户代理字符串替换到其他浏览器。请显示您的脚本。您是否能够找到它?@Vaviloff是。我没有登录。请尝试将“用户代理”字符串替换到其他浏览器。请显示您的脚本。您能找到它吗?@Vaviloff是的。我没有登录。渲染的图像没有任何更改,它仍然显示一个旧的Google Alerts网站。我已经复制了整个字符串,并且只添加了Chrome和当前版本。渲染的图像没有变化,它仍然显示一个旧的Google Alerts网站。我已经复制了整个字符串,并且只添加了Chrome和当前版本。