2015-10-05 81 views
0

任務是使用web引擎在Facebook頁面上登錄。我爲此選擇了Ghost.py。安裝pySide,Flask和粘貼模塊,最終得到Ghost.py命令'pip install Ghost.py'。 我的登錄腳本很簡單:使用Ghost.py python包登錄到facebook

from ghost import Ghost 
ghost = Ghost() 
session = ghost.start() 
page, resources = session.open('https://www.facebook.com/login.php') 

result, resources = session.set_field_value("input[id=email]", 'email') 
result, resources = session.set_field_value("input[id=pass]", 'passssss') 

page, resources = session.call("form", "submit", expect_loading=True) 
session.capture_to('I:\\beer.png') 

但Facebook頁面上的消息時,我使用我的Windows PC我看到「啓用瀏覽器的cookie的」。當我使用安裝了fedora的筆記本電腦時,我成功登錄了。 有什麼區別,以及如何擊敗這個問題? 我想這是我的Windows PC上的舊webkit版本。

回答

3

到目前爲止,我可以在Windows PC上用以下代碼登錄Facebook。任何時候由於升級而導致更改時,都要更改受影響的部分。乾杯。

from ghost import Ghost, Session 

ghost = Ghost() 
USERAGENT = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0" 

with ghost.start(): 
    session = Session(ghost, download_images=False, display=True, user_agent=USERAGENT) 
    page, rs = session.open("https://m.facebook.com/login.php", timeout=120) 
    assert page.http_status == 200 

    session.evaluate(""" 
    document.querySelector('input[name="email"]').value = '[email protected]'; 
    document.querySelector('input[name="pass"]').value = 'email-password'; 
    """) 

    session.evaluate("""document.querySelector('input[name="login"]').click();""", 
       expect_loading=True) 

    """ 
    import codecs 

    with codecs.open('fb.html', encoding='utf-8', mode='w') as f: 
     f.write(session.content) 
    """ 

    # session.save_cookies('fbookie') 
    session.capture_to(path='fbookie.png') 

    # gracefully clean off to avoid errors 
    session.webview.setHtml('') 
    session.exit() 
+0

反正是有使用這個對於Facebook桌面即www.facebook.com? – goose

+0

基本上,在完成移動身份驗證後,請更改回桌面地址。檢查看看是否適合你。 – iChux

1

登陸與iChux的解決方案上面的桌面適應如下:

from ghost import Ghost, Session 

ghost = Ghost() 
USERAGENT = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0" 

with ghost.start(): 
    session = Session(ghost, download_images=False, display=True, user_agent=USERAGENT) 
    page, rs = session.open("https://www.facebook.com/?stype=lo&jlou=AfeuEMqFUkvZMOq7J0MmLJ6USegaIUsBJ5NAu-Qs3_JCE6MOHJGbiY-017Ob9CQCLUyUZ43Yuu2Etp091voL7O26&smuh=61591&lh=Ac_ChjmeXXM3DLIs", timeout=120) 
    assert page.http_status == 200 

    session.evaluate(""" 
    document.querySelector('input[name="email"]').value = 'email'; 
    document.querySelector('input[name="pass"]').value = 'password'; 
    """) 

    session.evaluate("""document.querySelector('#loginbutton').click();""", 
       expect_loading=True) 


    import codecs 

    with codecs.open('fb.html', encoding='utf-8', mode='w') as f: 
     f.write(session.content) 


    # session.save_cookies('fbookie') 
    #session.capture_to(path='fbookie.png') 

    # gracefully clean off to avoid errors 
    session.webview.setHtml('') 
    session.exit()