如何使用Python请求登录网页?标头有问题



我正试图使用Python登录LinkedIn,从中获取一些数据。但在发送请求6个小时后,我得到了同样的"您必须通过身份验证才能访问此页面"的回复。我猜问题出在页眉上。但我没能让它发挥作用。以下是我的想法:

import requests
from bs4 import BeautifulSoup
payload =   {
'session_key' : EMAIL,
'session_password' : PASSWORD
}
headerSet = {
'content-type' : 'appplication/x-www-form-urlencoded',
'user-agent' : 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Mobile Safari/537.36'
}

feed = 'https://www.linkedin.com/feed/'
url = 'https://www.linkedin.com/login/checkpoint/lg/login-submit'
with requests.Session() as s:
p = s.post(url, data=payload, headers=headerSet)
print(p.text)
r = s.get(url)
soup = BeautifulSoup(r.content)
print(soup.prettify())
def Login():
session     = requests.Session() # Creating a session to contain the cookies
url         = 'https://www.linkedin.com/login' # the url that contains the post paramters
Get_Headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "en,en-US;q=0.9,ar;q=0.8",
}
main_html       = session.get(url,headers=Get_Headers,verify=False).text
soup            = BeautifulSoup(main_html, 'html.parser')  
csrfToken       = soup.find('input', {'name': 'csrfToken'}).get('value')
sIdString       = soup.find('input', {'name': 'sIdString'}).get('value')
controlId       = soup.find('input', {'name': 'controlId'}).get('value')
parentPageKey   = soup.find('input', {'name': 'parentPageKey'}).get('value')
trk             = soup.find('input', {'name': 'trk'}).get('value')
session_redirect= soup.find('input', {'name': 'session_redirect'}).get('value')
loginCsrfParam  = soup.find('input', {'name': 'loginCsrfParam'}).get('value')
pageInstance    = soup.find('input', {'name': 'pageInstance'}).get('value')
pageInstance    = soup.find('input', {'name': 'pageInstance'}).get('value')  


Post_Data = {
'csrfToken': csrfToken,
'session_key': 'email here',
'ac': 0,
'sIdString': sIdString,
'controlId': controlId,
'parentPageKey': parentPageKey,
'pageInstance': pageInstance,
'trk': trk,
'session_redirect': session_redirect,
'loginCsrfParam': loginCsrfParam,
# fp_data: {"X-kcnN2cez-f":"AwIHlXRpAQAAImHbUFfTzoZj1Eyqi8fC6QjI9Fmx9REX3bPOsas9PjU3F-c3AX8AAAGLr4YowLkAAAAAAAAAAA==","X-kcnN2cez-b":"ioxn52","X-kcnN2cez-c":"AwIHlXRpAQAAImHbUFfTzoZj1Eyqi8fC6QjI9Fmx9REX3bPOsas9PjU3F-c3AX8AAAGLr4YowLkAAAAAAAAAAA==","X-kcnN2cez-d":"o_0","X-kcnN2cez-z":"p","X-kcnN2cez-a":"mERr=S3cqxiJTs013LppL2FX-hrNIyGSTPqoG0q9y2ey212-BAlvKgqkYI6DpubzA04LyKCzxs2aFXZUeCAqbA0J8J19gVsvAH2GCVF=IJRL=GgTo4cYMse=XnxKaUPD_DlqHMCpiUqbz2B95L01XLgTpy4Aj2B4KHkAIwsunKJxLFUSjHpFH-btFhvtVzMMRCnvXdInUvjHwUu0Tgq21BAa42HXiSiRQ7BPDmBu00HQ3ZZqtA5Y2BH4Nwl-ZA=tYsafqRABOLNYoyz4R-LqodY3vKY6qHRhyZBDjLJb65seebi0Ijd572XGjgj-ItgIL5_KsCHZdIVHxxSPfIZTqhD057fzfjeau-E5bv9EHuQuDQEfM1Dui3XGfFanxC14h1kQG6ZNT05Ql25vOrqYaBfPLV6cb4JaG78rBQUiYo5FDNtTF8AbXnk-cL0f6kP-=Va_v0yNf5HQKlyPj7qFq2gcuS6vQ8rb8j1rF9ATI=_hpOvAiLu7wGrhC9ZhN4apxgeBHD_l6nnDaGliSxO6sfnLu7E6zDoP3PsEg7DINdnnbbQfy_2dXGBAjNHPLc8J6TE17MTbEUPGXP=_RrGcwxhBO6gQFc9L=eaoOLVokoD1I08DjqUu2zqd_G4j05dFIo0zZldut-NkliRiodRbC5a4zdeeCeUVzz5nJ-3=NFeKux0kolH3zrHT5X0BYrzLACtbBKQOBHu8mBGV_vRMfzMHl0Um34fkVHF5pxHVgP5GZ1c7uuxZRA_-MCH9KBQ_23iK-RDvhYtLqk7J1z_EYmXcsBXOKopvlEsmpR0n7vXTN7rMd0EtEXgkT8C1hZKs02qD8dXmUl-3mVkItABd3ajFaBumclJmgnXEsMpaXQJ1Yg2879G4TEKD0N6NKkEMYm663Sz1-UsHikt-qzMVRk2vr_94PvK7=_EBAgyMPLu4AYSOZwPEG9sDeJN8cleK61qqZp24oBq=lY0g3xzU6SKM_p_sXOdlcEuvT4buIQdkFisTHLpGuloYl1sIJM4v=EyTVitXUlGcQ_A3Xc1ANmuZBnaO1IaCddAiyOJu7YwI2X6TrahiydICsB6I64pt=4ei_5mM2cGG7DmjFxuScN4RuO=pipxUCuFFUNiqQLA47o1hhjltK-bHTPo52DynU=NGDymA9Fsla7_rvpQZmLkc95=rgh6UC5eYnmLlj6AF83LuT_sTz8k1jbzTaYtVFzBPF_eqHT99shHAeRa5b8NixbT1YFUUKKcdG78h8h_sRo30c47ZSPvef7Uwlpdl__LwRy0IodrrbYz0F-apuhRRobfCANnkkQxhhUGXJF9P9BV3fsm1O-agwiw=JR-xM-jTmmaM-IwL97b8NE=hjVlOraSsKQp2r1J7Q7mlpvK_kej=iv58Au2mwpA98XUeVANShksAAPdRccHJL16SZ25JIeCoHRg17c9q8vgXQtPAsEi4zgJ7wdB_893GOdyz-JRogEKJ_S-mYlACD7tXRy2NKpiHbnYn-5idv0gt4GNIvd6v0CSXsIX_KFzEQluXvqL=CI3EhmLZN4kpeUo6rBd62s0yqRfVaLgOJafnDwQVS_1nqaP7nk3OOBpFsyZjxe2-CqyeajgYvKGI3_7gGZ1RQv2sSfcGo42GkFeeXbu_UT8VVIhgpX5qF1VEoqy4td1bbbT44u8474_-X4Jd_Y-I36lgYbs3ubT4-NynaDMq0H5tmw1Tld27yxQKpDK_FS64dGCzNRVJntCG1uacVbLBq0I1jfRL2YholfY_F140nHRbxMgaGfYiKnqF5dCaAQ0GwFA1Us8F=uSgMLzIInR36dkhqzwg3im8Bb3febKn-c2Ad3xO3cr10xUGd7F3Uyg79vLhflPyEBunRRXx849Qyh4TVaQ0Dh3B_cZj8UmDuHj9JIUVijsyRJJkz5MlPn-ILq1D3tdColOt-88BY9gM=P7gtac6nnN3icdx9t6NpA852u1pX1chF9aSxL6U=3AVgwoLo07sNla-X8SZ30PEKs5=asFaR_TxGlT3IDgklxeX9bRiZORffxlmFyrXv3gYEZET2RQB5F8mPlFr1--lU4sBzFVYhwPPsldXmGfbHeZCF7nqqKq=gqes7SIjP_hNOrV5lTPNoNvLv23YTT96V=8hzE60qOaJ-fuSSKmy-MrgE_70tGZPA6Rvo84IvpPHK8r_Yhco0Mc07S-SdDML7hQIzl6jMG9CsQkmUICaiRO10E1_8dPfiEi5PX3h=VZNfJR4LoE3w9zobqX1xJFQ2K2OoVXAD0kpk0j80hPib4PXm03R16JbuSdiQZkA34MdjXDdCD32asj4cFxTXA3NHiurr_hvJcrwtsTq6f2z=zxYdTKd2YAErt24t-HZe=NyxRfZJMjkPrem=NopoDdL173jAwSByzdulsZUoQvtByOKJ-Qiu-1N-iTLMZin2hqYP75z8yBdtaavo2ADGxUxkx3lhlx48exvkLznHL7VK4F3gfJf_-hJFoRPrMZdrIczEaT0nCEtnhv51PiT2hCjO4YNQoyc4fyaZ0Sjj6LgMXLlf1uhJrjrEHikljb7jIX46=33RKuxgZ75m21zQy62YM0atrlcvDiv75EpQhXSCp5FSa8FAmTaqAsIp-EqdndgpC=KpKR=A8qM3Bfxn6bu5PUur31joEISDIoY16jLPFH7yLQS00=H45AT79b_Kr4ly29yEq6EMjfgrOYlClpL8Zkh9QoolVq6vzBwlTdgKTTjogqGH8QUVROh59j3XbqBPdu3CUeZURxv4Z_Ux9HZ0ajkeUgMwhyY1ZXQbpzwheVloCwm6JEH-Djw809IbBI-GRxE_G3FsTPb3U9s1nQX1ql6liGRLE2o4bAw0LDcVcXewxrQevi_P-oTsPDwlSNooDMgsxsMbOge02-JP2rDcSZVhh4CwJCtwGMgH=BNnawNa9VtwllYfxtHX4J4mNiDsQEGcNLokco7vjzDboZGvUpsXFVN6R-LiU=IzehNXttqdQ6lXyegehy4lT4H1PADC2OfQxQf2qJydcfFaf04wqz-Grc_jrN0Lf0B1qACTe6qwcoNC6SbuK7Y1CJZlMuRbRdtnKRTeg9TmC4txi=BZjVkarT7LGhZOb3JgQLTvVwFdDpx7SmJZqeX7TyaRFpb00jnYS9AtzpbkGnpNL==lZ2XjN0maSaYQm8i9B86RaeNx1IrEb2wIspPFQAPOkb_JuDa6H=A2rOi-6pmQG2qZFVIwBKdGYGkRiRIq78fxdpiPdlqNX7xrR6xXlV1HOQ0Hqs0us9nZ-pYUH0ycERbKDtLLaRVZTSZGtj1MjBZG2XJBgrzG7BuM_2uAj=-Ki_=EN4XAavl_Xtct7n-qSj1Bcw7nCSox9YQvx9tZgRD8h5Ptu3VMjNdx7vLf0ScwZmQbdzzzs=iRU_8lOHMyYnNfKqlKjJJuCTZ2MshQJXrns-yr3d=-PtYap943j__peH1C746duK6jPbCjtMwo4EIJQAAYq=7XDgyGyAMOv6Jst3C-PqSMoa5br1bGRBbFxC5CIwnxNZfPQY7GTSwy-q4wIAlwAdqinjnynVCSv-CAilYb8Bt0uu9IdPFnv4Sq_4G5117=xlAhJIGOASs_5MzfHGjpg6MTCvKyfPcgeEky0h6mrilFe2nnxX_UsMdQRO86q5TYE1RiM-7ZpmaffALnAn8rDBvMdKMcYSjccwf6MmcreR8LQHmOnjNl02SU=kHUECMeNyqtj39QpzR=owpHlng-FbZc9LPNxXZ6CVw4kxs23trxVIVIyzxXe1r4TKNQQDhD2=7cfesxRpOmCyQGsoK1B5us9-q169loN_q6ARab0lmURCCXVPT6JuBupwyZQc5xGMPGk7NjI2bfjukqUdwwHUb6=dUfw9hzQtqdegvqEdcYPoBtbyXUxSLPNrjnx_mH1Gx=b506Nj6q-mI1jEg7N_r6UZxvZ5XFoJa8IHBaKrlHBZV7B-yNE3B1vr6jLrTReq74bfRQSNQ7l5TBsG9FQvGv7qNhUo2fz-uLICjaF9AkYwAGh2P6AX-2SBidA3wJ-hPAlHas06hS5snu5PVoXtUprCjo_2mxNkzs8ImZ21Q=OLAwbReyd78jgmxRJU1y8Bs9ic=xvS7NUkGN52jKk4s3whtS3LosxyI=UJ2EK--7qPLwl5HbCOrQEn9STAz0ZvMdDiA1Ju3Fu=7slJfvJeQqp6DhDymfU76wBED7IicNKNrcUn0Ub_T8hAzgw3QRMog_A=VoCHJNOkP2DOy_SELHVPtDPrFAeSsxAak=w5J8Ya5EqLE242Nr2sNPgrT8Je_zOkls6nMeiE_Zx=i5cM3f_3Y8nrJSgRIaLzue=QQ2-t=etBHbbaB8tnbtFmH1CFJdU_x9enMDEG-FqILtDtGOTdfLPbia1fgVGERGP_57gblo="}
'_d': 'd',
'session_password': 'password here'
}
print(Post_Data)
Get_Headers['referer'] = url
source = session.post(url='https://www.linkedin.com/checkpoint/lg/login-submit', data=Post_Data,headers=Get_Headers,verify=False, allow_redirects=True).text

也可以查看此项使用python请求会话登录LinkedIn

这很常见,但有一个快速的解决方法

  • 打开浏览器,从linkedin注销
  • 按F12,然后转到"网络"选项卡,清除那里的任何请求
  • 像往常一样登录linkedin
  • 在"网络"选项卡中,您将看到您的HTTPPOST请求
  • 获取每个http头参数,并将它们添加到您的python请求头中
  • 请重试您的脚本。从现在起linkedin不可能知道

最新更新