Python - 无法发送 Post 登录表单请求

Python - Unable to Send Post Request to login form

我正在尝试发送 POST 消息以登录到 Web 界面、进行身份验证并使用 cookie 下载设备上的可用历史数据。

问题:我的 POST 请求似乎无法正常工作,因为代码一直无法通过身份验证并且 returns 登录源页面内容并且没有 cookie。我认为我使用的表单数据不正确但不确定哪里出了问题?

from requests import session

payload = {
    'action': 'login_form',
    'login_user': 'niino4879',
    'login_password': 'password' #Not the actual password . :)
}

with session() as c:
    c.post('https://secure.advfn.com/login/secure', data=payload)
    response = c.get('https://mx.advfn.com/bolsa-de-valores/BMV/homex-HOMEX*/historico/descargar')
    print(response.headers)
    print(response.text)
    with open('response1.csv', 'wb') as itd:
            itd.write(response.content)
            itd.close()

设备登录web界面的源代码

<div class="wr wr-login">
    <div class="ct">
            <div id="formPage_wrapper">
                <div id="login_form" class="Element LoginElement "><div id="login_form_element">

    <div id="login_error">Sesión incorrecta - trate de nuevo</div>
    <div id="preloader" style="text-align:center;display:none; margin-bottom:10px;"><img id="indicator" style="display:inline;" src="/common/images/bgs/ajax-loader.gif" alt="loading"></div>
    <div id="form_group_wrapper">
        <div class="col col-1">
            <div id="form_wrapper">
                <form action="https://secure.advfn.com/login/secure" id="login_form" name="login_form" method="POST" target="">

                <input type="hidden" value="aHR0cHM6Ly9teC5hZHZmbi5jb20vY29tbW9uL2FjY291bnQvbG9naW4=" name="redirect_url" id="redirect_url">
                <input type="hidden" value="mx" name="site" id="site">

                <div class="fields">
                <label for="login_username">Usuario</label> 
                    <input type="text" tabindex="1" class="text ui-widget-content" value="niino4879" id="login_username" name="login_username" maxlength="64">
                </div>

                <div class="fields">
                <label for="login_password">Contraseña</label> 
                    <input tabindex="2" type="password" class="text ui-widget-content" value="" id="login_password" name="login_password" maxlength="16">
                </div>

                <div class="fields lost-pass">
                    <strong><a href="/common/account/password/request">¿Olvido su contraseña?</a></strong> &nbsp;
                    <input class="button" tabindex="3" type="submit" value="Iniciar" id="login_submit">
                </div>
            </form> 
        </div>
    </div>
    <div class="col col-2">
        <ul id="support_links"><li><a href="mailto:soporte@advfn.mx?subject=Ayuda Sesion" title="Contactar soporte al cliente">soporte@advfn.mx</a></li></ul>
    </div>
    <div class="fields create-account"><span class="break">¿No tienes una cuenta?</span> <span class="break"> <a href="/common/account/register"> Crea una ahora</a></span></div>
</div>

我看到表单操作:

<form action="https://secure.advfn.com/login/secure" id="login_form" name="login_form" method="POST" target="">

这是认证成功后的源代码 (手动登录)

<html lang="es-MX"><head><iframe sandbox="allow-scripts allow-same-origin" id="23c7310400b0c86" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="//acdn.adnxs.com/ib/static/usersync/v3/async_usersync.html">
    </iframe><iframe sandbox="allow-scripts allow-same-origin" id="22d11e897c80e36" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="//biddr.brealtime.com/check.html">
    </iframe><iframe sandbox="allow-scripts allow-same-origin" id="21073be26d3bdb4" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="//ap.lijit.com/beacon?informer=8910925&amp;gdpr_consent=">
    </iframe><iframe sandbox="allow-scripts allow-same-origin" id="20739ed2b398108" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" width="0" hspace="0" vspace="0" height="0" style="height:0px;width:0px;display:none;" scrolling="no" src="https://eus.rubiconproject.com/usync.html">
    </iframe>
<meta http-equiv="X-UA-Compatible" content="IE=edge">

<!-- APS_HEADER_START -->
<script src="https://www.googletagservices.com/activeview/js/current/osd.js?cb=%2Fr20100101"></script><script src="https://securepubads.g.doubleclick.net/gpt/pubads_impl_rendering_289.js?21062969"></script><script async="" src="https://sb.scorecardresearch.com/beacon.js"></script><script type="text/javascript" async="" src="https://www.google-analytics.com/plugins/ua/linkid.js"></script><script async="" src="//www.google-analytics.com/analytics.js"></script><script async="" type="text/javascript" src="https://www.googletagservices.com/tag/js/gpt.js"></script><script type="text/javascript">
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];
</script>

<script type="text/javascript" src="/common/javascript/postscribe.min.js?v=20190111170913_8d76dbb6fa6c3c90c6e8358070b9999a"></script>

<script type="text/javascript" src="/common/javascript/prebid.js?v=20190111170913_8d76dbb6fa6c3c90c6e8358070b9999a"></script>

<script type="text/javascript">
var aps = aps || {"adUnits":[{"type":5,"pos":1,"id":"APS_TOP_BANNER_468_X_60","adSlot":"\/2495092\/ADVFN_mx_ros_1","width":728,"height":90},{"type":5,"pos":30,"id":"APS_RIGHT_SKY_120_X_600","adSlot":"\/2495092\/ADVFN_mx_ros_30","width":120,"height":600},{"type":5,"pos":80,"id":"APS_300_X_250","adSlot":"\/2495092\/ADVFN_mx_ros_80","width":300,"height":250},{"type":5,"pos":810,"id":"APS_MPU_FOOTER","adSlot":"\/2495092\/ADVFN_mx_ros_810","width":300,"height":250},{"type":5,"pos":813,"id":"APS_BILLBOARD_FOOTER","adSlot":"\/2495092\/ADVFN_mx_global_813","width":970,"height":250},{"type":5,"pos":3000,"id":"APS_MOBILE_320x50","adSlot":"\/4196578\/ADVFN_APP_Banner","width":320,"height":50}],"site":"advfn","view":"mx","pid":"datadown","targeting":{"COOKIE":1,"known_user":1,"UL":30,"bp":1,"MKTAK":"fE1YfFJFR3xCTVZfTDF8Qk1WX0wyfFBCQnxNT05fTUFJTEVSfGtub3duX3VzZXI9MXxVTD0zMHxwYWdlX3BhdGg9L2JvbHNhLWRlLXZhbG9yZXMvQk1WL2hvbWV4LUhPTUVYKi9oaXN0b3JpY28vZGVzY2FyZ2FyfHN5bWJvbD1IT01FWCp8bWFya2V0PUJNVnw%3D","MKTAS":860,"symbol":"BMV%3AHOMEX%2A","symbol_type":"DE","market":"BMV","staff":"","eu":0,"geo":"MX","pid":"datadown"},"enabled":true,"openx_enabled":false,"prebid_enabled":true}
</script>

<script type="text/javascript" src="/common/javascript/aps.min.js?v=20190111170913_8d76dbb6fa6c3c90c6e8358070b9999a"></script>
<!-- APS_HEADER_END --><meta name="format-detection" content="telephone=no">
<meta name="robots" content="noindex,nofollow">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>ADVFN - Descarga de Datos</title>
<link rel="canonical" href="https://mx.advfn.com/bolsa-de-valores/BMV/homex-HOMEX*/historico/descargar">
<link rel="search" href="/common/opensearch/index" type="application/opensearchdescription+xml" title="ADVFN Share Price Search">
<link rel="stylesheet" href="/style.css?v=20190111170913_8d76dbb6fa6c3c90c6e8358070b9999a">
<link rel="stylesheet" href="/common/elements/css/symbol-title-element.css?v=20190111170913_8d76dbb6fa6c3c90c6e8358070b9999a">
<script type="text/javascript">
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create','UA-25061202-1',{'cookieDomain':'advfn.com'});
ga('require', 'linkid', 'linkid.js');
ga('set', 'dimension4', '3');

ga('send', 'pageview', '/' + 'data_downloads' + '/' + 'original');
</script><link rel="preload" href="https://adservice.google.com.mx/adsid/integrator.js?domain=mx.advfn.com" as="script"><script type="text/javascript" src="https://adservice.google.com.mx/adsid/integrator.js?domain=mx.advfn.com"></script><link rel="preload" href="https://adservice.google.com/adsid/integrator.js?domain=mx.advfn.com" as="script"><script type="text/javascript" src="https://adservice.google.com/adsid/integrator.js?domain=mx.advfn.com"></script><script src="https://securepubads.g.doubleclick.net/gpt/pubads_impl_289.js?21062969" async=""></script>

<script src="/common/generatedJS/ee9fa05b3336d6daae868d31ef0f047d.js?classes=_Common|_jQuery" type="text/javascript"></script>
<script type="text/javascript">
    if(typeof Locale !== 'undefined')
        var localeObj = new Locale('es_MX');
</script>
<script type="text/javascript" src="/script.js?v=20190111170913_8d76dbb6fa6c3c90c6e8358070b9999a"></script>
<script type="text/javascript">
<!--
if(window!=top)
    top.location.href=location.href;
// -->
</script>
<script language="javascript">
<!--
function doSubmit() {if(document.forms[0].btn.value == "" ) {document.forms[0].btn.value="s_ok"; return true;} else { return true; } }// -->
</script>
<link rel="prefetch" href="https://tpc.googlesyndication.com/safeframe/1-0-31/html/container.html"></head>
<body id="afnmainbodid" style="margin:0 5px 5px 5px" onload=" " bgcolor="white" link="#2b3266" vlink="black">
<form name="afnmain" id="mainRegForm" enctype="application/x-www-form-urlencoded" action="/p.php" method="GET" onsubmit="return doSubmit();">
<input type="hidden" name="pid" value="datadown">
<input type="hidden" name="btn" value="">
<link rel="stylesheet" type="text/css" href="/common/styles/header.css?v=20151021">

<span id="header-container">
    <aside id="header-menu">
        <div class="main-nav-search">
            <span id="logo-area">
                <header>
                    <h1>
                        <a href="/" title="Página de Incio ADVFN" style="background: url(/common/images/logos/advfn_112x29.png) no-repeat 0 0;">ADVFN PLC</a>
                    </h1>
                </header>
            </span>
            <div id="header-search-wrapper">
                <span id="header-quote-search">
                            <input class="advfn-autosuggest rounded" type="text" autocomplete="off" maxlength="16" id="headerQuickQuoteSearch" data-pid="datadown" placeholder="Ingrese símbolo" data-trigger-click="header-search-btn" data-cip-id="headerQuickQuoteSearch"><div id="headerQuickQuoteSearch-menu" class="autosuggest-menu" tabindex="1" style="display: none; top: 35.9948px; left: 0px;"><table tabindex="2" class="autosuggest-results"></table></div>
        <button id="header-search-btn" type="button"><div id="quickQuoteSearchMagnifylens"></div></button>
                    <span id="header-button-area">
                        <a href="//mx.advfn.com/p.php?pid=prodmatrix&amp;xref=header_upgrade" class="menu-upgrade-button">Pruebe Tiempo Real</a>
                    </span>
                </span>
            </div>
        </div>
        <nav>
            <ul class="mainnav">
                <li class="menu dropdown"><span class="menu-dropdown">Menu</span><div id="menu-content"><div id="menu-tool"><a href="/p.php?pid=pf"><div class="menu-tool-icon-wrapper" style="width: 80px;"><div class="menu-tool-icon" style="background-image: url(&quot;/common/images/header/tools/portfolio.png&quot;);"></div><div class="menu-tool-text">Portafolio</div></div></a><a href="/alarmas"><div class="menu-tool-icon-wrapper" style="width: 80px;"><div class="menu-tool-icon" style="background-image: url(&quot;/common/images/header/tools/alarms.png&quot;);"></div><div class="menu-tool-text">Alarmas</div></div></a><a href="/insights/toplist/BMV/volume/charts"><div class="menu-tool-icon-wrapper" style="width: 80px;"><div class="menu-tool-icon" style="background-image: url(&quot;/common/images/header/tools/ranking.png&quot;);"></div><div class="menu-tool-text">Ranking</div></div></a><a href="/p.php?pid=news"><div class="menu-tool-icon-wrapper" style="width: 80px;"><div class="menu-tool-icon" style="background-image: url(&quot;/common/images/header/tools/news.png&quot;);"></div><div class="menu-tool-text">Noticias</div></div></a><a href="/p.php?pid=forex"><div class="menu-tool-icon-wrapper" style="width: 80px;"><div class="menu-tool-icon" style="background-image: url(&quot;/common/images/header/tools/forex.png&quot;);"></div><div class="menu-tool-text">Forex</div></div></a><a href="/currency-converter/"><div class="menu-tool-icon-wrapper" style="width: 80px;"><div class="menu-tool-icon" style="background-image: url(&quot;/common/images/header/tools/curr_convt.png&quot;);"></div><div class="menu-tool-text">Convertidor de Divisas</div></div></a><a href="/p.php?pid=commodities"><div class="menu-tool-icon-wrapper" style="width: 80px;"><div class="menu-tool-icon" style="background-image: url(&quot;/common/images/header/tools/commodities.png&quot;);"></div><div class="menu-tool-text">Commodities</div></div></a><a href="/insights/trader-alerts"><div class="menu-tool-icon-wrapper" style="width: 80px;"><div class="menu-tool-icon" style="background-image: url(&quot;/common/images/header/tools/trader-alert.png&quot;);"></div><div class="menu-tool-text">Alarmas Trader</div></div></a><a href="/preguntas-respuestas/"><div class="menu-tool-icon-wrapper" style="width: 85px;"><div class="menu-tool-icon" style="background-image: url(&quot;/common/images/header/tools/qa.png&quot;);"></div><div class="menu-tool-text">Preguntas y Respuestas</div></div></a><a href="/criptodivisas"><div class="menu-tool-icon-wrapper" style="width: 85px;"><div class="menu-tool-icon" style="background-image: url(&quot;/common/images/header/tools/bitcoin.png&quot;);"></div><div class="menu-tool-text">Criptodivisas</div></div></a></div></div></li><li class="menu-monitor"><a href="//mx.advfn.com/p.php?pid=mon" title="Cotizaciones Multiples en streaming y tiempo real de la Bolsa Mexicana y otras bolsas internacionales">Monitor</a></li><li class="menu-chart"><a href="//mx.advfn.com/p.php?pid=charts" title="Graficas en streaming y tiempo real de la Bolsa Mexicana">Gráficas</a></li><li class="menu-level2"><a href="//mx.advfn.com/p.php?pid=level2" title="Formador de Mercado cotizaciones y libro de órdenes">Nivel 2</a></li><li class="menu-afores"><a href="//mx.advfn.com/educacion/afores-informacion-y-comparaciones" title="Calcule sus rendimientos con las diferentes Afores">Afores</a></li><li class="world dropdown"><span class="menu-dropdown">Mundial</span><ul><li class="odd first"><a href="/mundo"><img src="//images.advfn.com/imagesnew/2/us/front/globe.gif">Mundo</a></li><li class="even"><a href="/mundo/alemania"><img src="//images.advfn.com/imagesnew/2/gb/flags/3d/de.gif">Alemania</a></li><li class="odd"><a href="/mundo/australia"><img src="//images.advfn.com/imagesnew/2/gb/flags/3d/au.gif">Australia</a></li><li class="even"><a href="/mundo/brasil"><img src="//images.advfn.com/imagesnew/2/gb/flags/3d/br.gif">Brasil</a></li><li class="odd"><a href="/mundo/canada"><img src="//images.advfn.com/imagesnew/2/gb/flags/3d/ca.gif">Canadá</a></li><li class="even"><a href="/mundo/eeuu"><img src="//images.advfn.com/imagesnew/2/gb/flags/3d/us.gif">EEUU</a></li><li class="odd"><a href="/mundo/europa"><img src="//images.advfn.com/imagesnew/2/gb/flags/3d/eu.gif">Europa</a></li><li class="even"><a href="/mundo/filipinas"><img src="//images.advfn.com/imagesnew/2/gb/flags/3d/ph.gif">Filipinas</a></li><li class="odd"><a href="/mundo/francia"><img src="//images.advfn.com/imagesnew/2/gb/flags/3d/fr.gif">Francia</a></li><li class="even"><a href="/mundo/grecia"><img src="//images.advfn.com/imagesnew/2/gb/flags/3d/gr.gif">Grecia</a></li><li class="odd"><a href="/mundo/holanda"><img src="//images.advfn.com/imagesnew/2/gb/flags/3d/nl.gif">Holanda</a></li><li class="even"><a href="/mundo/italia"><img src="//images.advfn.com/imagesnew/2/gb/flags/3d/it.gif">Italia</a></li><li class="odd"><a href="/mundo/mexico"><img src="//images.advfn.com/imagesnew/2/gb/flags/3d/mx.gif">México</a></li><li class="even"><a href="/mundo/portugal"><img src="//images.advfn.com/imagesnew/2/gb/flags/3d/pt.gif">Portugal</a></li><li class="odd last"><a href="/mundo/reinounido"><img src="//images.advfn.com/imagesnew/2/gb/flags/3d/gb.gif">Reino Unido</a></li></ul></li><li class="followfeed-menu"><a href="//mx.advfn.com/follow-feed" title="Follow Feed">Follow Feed</a></li>
            </ul>
            <ul class="userbox">
                <li class="user dropdown">
                    <span class="user-span" style="background-image: url(&quot;//mx.advfn.com/p.php?pid=profilepic&amp;user=niino4879&quot;);">niino4879</span><ul><li><a href="//mx.advfn.com/forum/perfil" title="">Mi Perfil</a></li><li><a href="//mx.advfn.com/common/messages" title="">Mensajes</a></li><li><a href="//mx.advfn.com/common/settings" title="">Preferencias</a></li><li><a href="mailto:soporte@advfn.mx?subject=Ayuda sobre el sitio" title="Contáctenos">Contáctenos</a></li><li><a href="//mx.advfn.com/tel:(55) 4170 8128" class="menu-support-phone">Llámenos</a></li><li><a href="//mx.advfn.com" onclick="menuShowLiveChat(); return false;">Chat en vivo</a></li><li><a href="//mx.advfn.com/p.php?pid=front&amp;logout=1" title="">Cerrar Sesión</a></li></ul>
                </li>
            </ul>

        </nav>
    </aside>
</span>

<div id="notification-zone" class="Element NotificationZoneElement "></div>



        <aside class="APS_TOP_BANNER_468_X_60_container">
            <div class="APS_TOP_BANNER_468_X_60_container">
                <div style="width: 728px; margin:15px auto;">
<div id="APS_TOP_BANNER_468_X_60" class="dfpAd APS_TOP_BANNER_468_X_60" curpage="datadown" page="apsglobalads" pos="1" view="mx" data-google-query-id="CO7u67vz7d8CFQmyTwodT4sLIg"><div id="google_ads_iframe_/2495092/ADVFN_mx_ros_1_0__container__" style="border: 0pt none;"><iframe id="google_ads_iframe_/2495092/ADVFN_mx_ros_1_0" title="3rd party ad content" name="google_ads_iframe_/2495092/ADVFN_mx_ros_1_0" width="728" height="90" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" srcdoc="" style="border: 0px; vertical-align: bottom;" data-google-container-id="1" data-load-complete="true"></iframe></div></div>
</div>
            </div>
        </aside>
        <script type="text/javascript">
        var NOT_PINNED = false;
        var APS_TOP_BANNER_468_X_60 = {
            element: $('div.APS_TOP_BANNER_468_X_60_container'),
            offset: 0,
            top: 0,
            scroll: function(){
                var pos = $(document).scrollTop();
                if(pos > APS_TOP_BANNER_468_X_60.offset) {
                    APS_TOP_BANNER_468_X_60.element.css({'position':'fixed', 'top': APS_TOP_BANNER_468_X_60.top});
                    APS_TOP_BANNER_468_X_60.startTimer();
                }
                else{
                    APS_TOP_BANNER_468_X_60.element.css({'position':'relative', 'top': 'auto'});
                }
            },
            stop: function(){
                $(window).off("scroll", APS_TOP_BANNER_468_X_60.initScroll);
                return;
            },
            init: function() {
                APS_TOP_BANNER_468_X_60.checkScrollTimer = window.setTimeout(function() { APS_TOP_BANNER_468_X_60.stop() }, 4000);
                $(window).on("scroll", APS_TOP_BANNER_468_X_60.initScroll);
            },
            initScroll: function(){
                if(typeof(APS_TOP_BANNER_468_X_60.checkScrollTimer)=='number')
                {
                    window.clearTimeout( APS_TOP_BANNER_468_X_60.checkScrollTimer );
                    $(window).off("scroll", APS_TOP_BANNER_468_X_60.initScroll);
                }
                APS_TOP_BANNER_468_X_60.top = APS_TOP_BANNER_468_X_60.element.offset().top;
                var mobileAppBanner = $('#smartbanner');
                if (mobileAppBanner.length > 0 && $(mobileAppBanner).is(':visible')){
                    APS_TOP_BANNER_468_X_60.offset = 82;
                }
                $(window).on("scroll", APS_TOP_BANNER_468_X_60.scroll);
                $('aside.APS_TOP_BANNER_468_X_60_container').addClass('fixed');
            },
            startTimer: function(){
                if(typeof(APS_TOP_BANNER_468_X_60.timer)=='undefined')
                {
                    APS_TOP_BANNER_468_X_60.timer = window.setTimeout(function() { APS_TOP_BANNER_468_X_60.stopScroll() }, 3000);
                }
            },
            stopScroll:function(){
                window.clearTimeout( APS_TOP_BANNER_468_X_60.timer );
                $(window).off("scroll", APS_TOP_BANNER_468_X_60.scroll);
                APS_TOP_BANNER_468_X_60.timer=false;
                APS_TOP_BANNER_468_X_60.element.fadeOut(400, function() {
                    APS_TOP_BANNER_468_X_60.element.css({'position':'relative', 'top': 'auto'}).fadeIn();
                });
                $('aside.APS_TOP_BANNER_468_X_60_container').removeClass('fixed');
            }
        }
        APS_TOP_BANNER_468_X_60.init();
        </script>



<div style="width:994px; margin:0px auto"><div id="breadcrumb" class="Element DRBreadcrumbElement "></div><div id="quote-menu" class="Element LinkListElement TabMenuElement "><ul><li class="odd first"><a href="/bolsa-de-valores/BMV/homex-HOMEX*/cotizacion" title="Cotizaciones para las Acciones Homex">Cotización</a></li><li class="even"><a href="/bolsa-de-valores/BMV/homex-HOMEX*/grafica/tiempo-real" title="Gráfica de HOMEX*">Gráfica</a></li><li class="odd"><a href="/bolsa-de-valores/BMV/homex-HOMEX*/profundidad-de-mercado" title="Profundidad de Mercado. para HOMEX*">Profundidad de Mercado</a></li><li class="even"><a href="/bolsa-de-valores/BMV/homex-HOMEX*/operaciones" title="Operacioens para HOMEX*">Operaciones</a></li><li class="odd"><a href="/bolsa-de-valores/BMV/homex-HOMEX*/noticias" title="Noticias sobre Homex">Noticias</a></li><li class="even"><a href="/bolsa-de-valores/BMV/homex-HOMEX*/financieros" title="Información Financiera for Homex">Infomación Financiera</a></li><li class="odd selected last"><a href="/bolsa-de-valores/BMV/homex-HOMEX*/historico" title="Histórico de Datos para HOMEX*">Histórico</a></li></ul></div><div id="toolbar"><select name="symbol_alt" onchange="javascript:location.href=this.value;" style="width:250px" data-cip-id="cIPJQ342845639"><option selected="">Desarrolladora Homex, S.A.B. de C.V. (BMV)</option></select><input type="text" name="symbol" class="advfn-autosuggest" id="symbol_entry" value="BMV:HOMEX*" onkeypress="return disableEnterKey(event, this.value, 'datadown');" style="width:150px" spellcheck="false" autocomplete="off" data-cip-id="symbol_entry"><div id="symbol_entry-menu" class="autosuggest-menu" tabindex="1" style="display: none; top: 300.313px; left: 263.984px;"><table tabindex="2" class="autosuggest-results"></table></div><input type="submit" id="symbol_ok" value="OK" name="s_ok" onclick="this.form.btn.value=this.name;this.form.symbol.value=this.form.symbol_entry.value; this.form.submit();"><select id="dropdown-element" style="cursor:pointer" onchange="javascript:location.href=this.value;" data-cip-id="cIPJQ342845640"><option selected="" style="display:none">Agregar a...</option><option value="https://mx.advfn.com/common/alerts/newsalerts/add?symbol_search=BMV%3AHOMEX%2A&amp;u=niino4879">Agregar Alarma de Noticias</option><option value="https://mx.advfn.com/p.php?pid=alerts_edit&amp;newsymbol=BMV%3AHOMEX%2A">Agregar Alarma de Precio</option><option disabled="" value="">Agregar al Monitor:</option><option value="https://mx.advfn.com/p.php?pid=mon&amp;symbol_search=BMV%3AHOMEX%2A&amp;mid=1"> - Monitor Predeterminado</option><option value="https://mx.advfn.com/p.php?pid=pf_add&amp;from=pf">Crear un Portafolio</option></select></div><div id="sub-menu" class="Element LinkListElement TabMenuElement "><ul><li class="odd first"><a href="/bolsa-de-valores/BMV/homex-HOMEX*/historico">Resumen</a></li><li class="even selected"><a href="/bolsa-de-valores/BMV/homex-HOMEX*/historico/descargar">Descargar Histórico de Datos</a></li><li class="odd last"><a href="/bolsa-de-valores/BMV/homex-HOMEX*/historico/more-datos-historicos">Mas Datos Históricos</a></li></ul></div></div>

<div align="center"><table style="background-color: #ffffff;" cellspacing="1" cellpadding="2"><tbody><tr bgcolor="#6566a3"><td colspan="3" align="center" class="mb title"><font color="white">Descarga de Datos para BMV:HOMEX*</font></td></tr><tr bgcolor="#f0f0E7"><td class="m">&nbsp;Datos diarios</td><td class="m">&nbsp;<a href="https://mx.advfn.com/p.php?pid=data&amp;daily=1&amp;symbol=BMV%5EHOMEX%2A">CSV</a></td><td class="m">&nbsp;<a href="https://mx.advfn.com/p.php?pid=data&amp;daily=1&amp;columnheads=1&amp;symbol=BMV%5EHOMEX%2A">CSV (con encabezado)</a></td></tr>
<tr bgcolor="#e5e5f3"><td class="m">&nbsp;28 días de datos Intradía por minuto</td><td class="m">&nbsp;<a href="https://mx.advfn.com/p.php?pid=data&amp;daily=0&amp;symbol=BMV%5EHOMEX%2A">CSV</a></td><td class="m">&nbsp;<a href="https://mx.advfn.com/p.php?pid=data&amp;daily=0&amp;columnheads=1&amp;symbol=BMV%5EHOMEX%2A">CSV (con encabezado)</a></td></tr>
</tbody></table>
</div><div style="margin: 10px 0px; text-align: center"></div><div style="height: 15px"></div><div class="clear"></div><div id="RecentStocksViewedElement" style="text-align:center;width:970px; position:relative; margin:auto;">   <div style="width:970px;text-align:left;margin:auto;display:inline-block"><table id="RecentHistoryTbl" cellpadding="0" cellspacing="0" style=" float:left;border:1px solid #989898;-moz-border-radius: 5px;-webkit-border-radius: 5px;border-radius: 5px;width:970px; -moz-box-shadow: 0px 0px 2px #888;-webkit-box-shadow: 0px 0px 2px #888;box-shadow: 0px 0px 3px #888;clear:both;background-color:white;">
                <tbody><tr><td style="width:57px;"></td>
                <td style="font-size:medium;font-family:arial, helvetica,sans-serif;font-weight:bold;text-align:left;height:30px;color:#3F3F3F;white-space: nowrap;">Su Consulta Reciente
                </td>
                <td id="history_pagination" style="font-size:small;color:grey;font-family:arial, helvetica,sans-serif;text-align:right;white-space: nowrap;">Página 1 de 2
                </td>
                <td style="width:57px;"></td></tr><tr><td style="vertical-align:top;padding-top:20px;"><center><a href="#"><img id="left-arrow" src="/common/instrumentsHistory/images/hist-arrow-left.gif"></a></center></td><td colspan="2"><div id="slider" style="position: relative; width: 856px; overflow: hidden; height: 219px;">
                <div id="slider-container" style="position: absolute; top: 0px; left: 0px; width: 1712px; height: 160px;">
                <div id="d1" style="position: absolute; top: 0px; left: 0px;width: 856px;height: 160px;"><table cellpadding="0" cellspacing="3"><tbody><tr><td style="text-align:center; width:102px; background-image:url('/common/instrumentsHistory/images/hist-box-grey.jpg'); background-repeat:no-repeat;" valign="top">
    <table cellpadding="0" cellspacing="0" border="0" style="width:102px;cursor: pointer;" onclick="window.location='https://mx.advfn.com/bolsa-de-valores/BMV/homex-HOMEX*/cotizacion';">
        <tbody><tr style="height:15px;">
            <td style="text-align:center;">
                <div style="margin-left:auto;margin-right:auto;background-color:black;width:36px;height:15px;-moz-border-bottom-left-radius: 5px;-webkit-border-bottom-left-radius: 5px;border-bottom-left-radius: 5px;-moz-border-bottom-right-radius: 5px;-webkit-border-bottom-right-radius: 5px;border-bottom-right-radius: 5px;position:relative;">
                    <span style="font-size:12px;font-family:arial, helvetica,sans-serif;color:white;font-weight:bold;height:15px;position:absolute;top:1px;left:0px;width:36px;">BMV</span></div>

能否请您告知获得身份验证和发送 POST 请求并登录网站的正确方法?

谢谢!!

您使用的登录请求数据不是实际发送的数据(至少在我这边)

根据您的代码,请求有以下数据:

  • 动作
  • login_user
  • login_password

然而,它实际上具有以下特点:

  • redirect_url
  • 网站
  • login_user姓名
  • login_password

此外,您没有包括 "Content-Type" header 这可能也会造成一些麻烦因为服务器可能不会将请求视为 "application/x-www-form-urlencoded" 而是 "application/octet-stream"。在 POST 请求上发送 "Content-Type" header 不是强制性的,但始终建议这样做,因为服务器可能无法解释正在发送的数据。然而,这是一个大胆的猜测,它可能不是问题所在。

我写了下面的代码,它成功登录了。您可以通过取消最后两行的注释来测试它。

    import requests

    s = requests.session()

    loginUrl = "https://secure.advfn.com/login/secure"
    headers = {
    "Content-Type":"application/x-www-form-urlencoded" #You must send this
    }

    login_data = {
    "redirect_url":"aHR0cHM6Ly93d3cuYWR2Zm4uY29tL2NvbW1vbi9hY2NvdW50L2xvZ2lu",  #This value is sent on the request and is missing in yours
    "site":"www", #This value is sent on the request and is missing in yours
    "login_username":"user",
    "login_password":"password"
    }

    r = s.post(loginUrl, headers=headers, data=login_data)

    #r0 = s.get("https://investorshub.advfn.com/boards/myaccount.aspx", headers=headers).text --> Use this two lines to check it works. It goes to the profile page and prints the username.
    #print(r0.split("<td id=\"ctl00_CP1_tdLoginID\">")[1].split("</td>")[0])