Splash:网站在渲染时检测到浏览器阻止了 Cookie

问题描述

我对飞溅/刮擦很陌生,目前正在尝试抓取一个需要登录/身份验证的基于 javascript 的网站。由于需要爬取的页面数量和网站速度,我尝试使用 Scrapy,而不是模拟浏览器浏览页面方式的 Selenium,Scrapy 可以爬行基于 javascript 的页面。然而,每当我尝试抓取scrapy项目时,该网站似乎检测到浏览器正在阻止cookie,如下所示。

enter image description here

下面是我的代码

class CiqbankSpider(scrapy.Spider):

name = 'ciqbank'
allowed_domains = ['capitaliq.com']
start_urls = 'https://capitaliq.com/'
login_page = 'https://www.capitaliq.com/ciqdotnet/login-sso.aspx?'

def start_requests(self):      
    LUA_SCRIPT = """
    function main(splash,args)
        splash:init_cookies(splash.args.cookies),splash:go("https://www.capitaliq.com/ciqdotnet/login-sso.aspx?"),splash:wait(15),local title = splash.evaljs("document.title"),return {
            title=title,cookies = splash:get_cookies(),},end
    """
    
    yield SplashRequest(
        url=self.login_page,callback=self.parse_login,dont_filter=True,endpoint='execute',args={'wait':15}),'lua_source':LUA_SCRIPT})

def parse_login(self,response):
    return FormRequest.from_response(
        response,formdata={
            '__VIEWSTATE':  response.xpath("//*[@id='__VIEWSTATE']/@value").extract_first(),'__VIEWSTATEGENERATOR': response.xpath("//*[@id='__VIEWSTATEGENERATOR']/@value").extract_first(),'__EVENTVALIDATION': response.xpath("//*[@id='__EVENTVALIDATION']/@value").extract_first(),'captchaValidated': '0','username': '******','password': '******','PersistentLogin': 'false'
        },callback=self.parse_afterlogin
    )

def parse_afterlogin(self,response):
    if response.xpath('//a[@href="/CIQDotNet/logout.aspx"]/text()').extract_first() is not None:
        print("Successfully Logged In")
        Account_Name = response.xpath('//div[@class="cPageTitle"]/div/span/text()').extract_first
        print("Account Name: "+Account_Name.replace('Welcome ',''))
    else:
        print("\nLogin unsucessful\n")
        open_in_browser(response)
        yield   

起初我认为这与 POST 请求有关,因为我不熟悉 Viewstate 的东西,所以我尝试使用 scrapy-selenium 组合来解决,这也不起作用。事实证明,问题出在 Splash 上,因为当我尝试在飞溅(本地主机)上渲染页面时,我从网站截图中得到了相同的消息,但没有登录。有人知道如何解决这个问题吗?非常感谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)