簡體   English   中英

通過python請求登錄,cloudflare網站

[英]Log in via python requests, cloudflare site

我正在學習python的樂趣,為此,我的項目是使用Flash交易解析熱門網站,並將其發布到網站https://www.pepper.pl/ 在瀏覽chrome網站時,我看了一下網絡,發現登錄的請求正文包含以下數據:

_token: gse5bAi58jnciXdynLu7D7ncXmTg1twChWMjsOFF
source: generic_join_button_header
identity: login
password: password
remember: on

因此,使用郵遞員,我已將此數據填充到內容類型為application / x-www-form-urlencoded的請求中。 回答是正確的,我可以用郵遞員登錄。 但是,當我嘗試使用python進行復制時,這是一個失敗,我收到了404。

def get_pepper_token():
    url = "https://www.pepper.pl/login/modal/login"
    request = requests.get(url)
    soup = BeautifulSoup(page, features="html.parser")
    return soup.find('input', attrs={'name': '_token'})['value']


def get_login_headers():
    url = "https://www.pepper.pl/login"
    username = 'username'
    password = 'password'
    token = get_pepper_token()

    payload = {
        '_token': token,
        'source': 'generic_join_button_header',
        'identity': username,
        'password': password,
        'remember': 'on'
    }

    headers = {
        'Content-Type': "application/x-www-form-urlencoded"
    }

    response = requests.post(url, payload, headers=headers)

因此,我在郵遞員控制台中監視了確切的請求:

Request Headers:
    content-type:"application/x-www-form-urlencoded"
    cache-control:"no-cache"
    postman-token:"de74adb5-5e9b-4c98-9a95-bb69bc739270"
    user-agent:"PostmanRuntime/7.2.0"
    accept:"*/*"
    cookie:"__cfduid=d32b701203ce16ee47549cbe5388b3faa1534746292; first_visit=%22bf0e1200-a441-11e8-b92e-6805ca619fd2%22; pepper_session=%2255c4b461a56c37f5c2ce1a7323b44f8d12353e91%22; browser_push_permission_requested=1534748540; remember_afba1956ef54387311fa0b0cd07acd2b=%22100085%7ChX2GS7H3l8QY79HasDcB3scptVyKGDVMJHdz4Ux2ONIih6Rp2VKhU0BpxvzD%22; view_layout_horizontal=%220-1%22; show_my_tab=0; navi=%5B%5D"
    accept-encoding:"gzip, deflate"
    referer:"https://www.pepper.pl/login"

如您所見,請求標頭中有一些我沒有在郵遞員中輸入的字段。 我從郵遞員的請求標頭中手動添加了cookie值,並且它起作用了。 這些字段的其余部分不是必需的。

您知道我如何生成此Cookie嗎?

答案是簡單的RoboBrowser庫,這是我解決部分問題的方法:與以前的嘗試相比,該解決方案非常簡短方便。 RoboBrowser GitHub頁面

url = "https://www.pepper.pl/login/modal/login"

browser = RoboBrowser()
browser.open(url)

signup_form = browser.get_form('login_form')
signup_form['identity'].value = self.username
signup_form['password'].value = self.password
browser.submit_form(signup_form)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM