Skip to content
This repository has been archived by the owner on Nov 9, 2024. It is now read-only.

No results even though 'success' #7

Open
RayBB opened this issue Jun 1, 2021 · 14 comments
Open

No results even though 'success' #7

RayBB opened this issue Jun 1, 2021 · 14 comments

Comments

@RayBB
Copy link
Contributor

RayBB commented Jun 1, 2021

Hey there, thanks for making this awesome tool. I really could use something like this for some places where Southwest has planes flying between two locations that require a layover they don't make routes for (like HNL to LGA).

Anyway, when I search I get empty results:

python southwest.py -a SFO -d LAX -t 2021-06-19
'success'
flight    depart    depart    arrive    fares    route    num      duration
num       date      time      time                        stops
--------  --------  --------  --------  -------  -------  -------  ----------

Any ideas? I updated the request headers as mentioned in readme.

@redfern314
Copy link
Owner

Hi @RayBB! It's entirely probable that SW has changed their private API, again. I'll take a look at some point but it's sadly hard to keep up. It might be easier to go back to a web-crawler interface instead of making raw HTTP requests...

As an aside, your use case is one that I hadn't considered. I'm surprised that they wouldn't "make a route" for that kind of trip.

@RayBB
Copy link
Contributor Author

RayBB commented Jun 1, 2021

@redfern314

Maybe that don't make a route for a trip like that because of complications with checked bags or some other logistical challenge. I even messaged them about it and they said they can't book things like that for us over the phone either it would have to be done manually.

Maybe doing a js based thing in the browser will get more consistent results.

Once I got this working it was still intermittent and will work one time but not the next. When it does work it is fantastic though!

Here's what I found:
stopsDetails is now nested under segments.
Like this:

Spoiler
{
"details": [
  {
    "originationAirportCode": "LGA",
    "destinationAirportCode": "TPA",
    "departureTime": "14:30",
    "arrivalTime": "22:10",
    "nextDay": false,
    "totalDuration": 460,
    "flightNumbers": [
      "431",
      "653"
    ],
    "filterTags": [
      "NOON_TO_SIX",
      "AVAILABLE",
      "STOPS"
    ],
    "departureDateTime": "2021-06-22T14:30:00.000-04:00",
    "arrivalDateTime": "2021-06-22T22:10:00.000-04:00",
    "segments": [
      {
        "originationAirportCode": "LGA",
        "destinationAirportCode": "HOU",
        "flightNumber": "431",
        "duration": "03:55",
        "numberOfStops": 0,
        "departureTime": "14:30",
        "arrivalTime": "17:25",
        "departureDateTime": "2021-06-22T14:30:00.000-04:00",
        "arrivalDateTime": "2021-06-22T17:25:00.000-05:00",
        "operatingCarrierCode": "WN",
        "marketingCarrierCode": "WN",
        "aircraftEquipmentType": "73W",
        "features": [
          "WIFI"
        ],
        "wifiOnBoard": true,
        "stopsDetails": [
          {
            "originationAirportCode": "LGA",
            "destinationAirportCode": "HOU",
            "flightNumber": "431",
            "legDuration": 235,
            "stopDuration": 100,
            "changePlanes": true,
            "departureTime": "14:30",
            "arrivalTime": "17:25",
            "departureDateTime": "2021-06-22T14:30:00.000-04:00",
            "arrivalDateTime": "2021-06-22T17:25:00.000-05:00"
          }
        ]
      },
      {
        "originationAirportCode": "HOU",
        "destinationAirportCode": "TPA",
        "flightNumber": "653",
        "duration": "02:05",
        "numberOfStops": 0,
        "departureTime": "19:05",
        "arrivalTime": "22:10",
        "departureDateTime": "2021-06-22T19:05:00.000-05:00",
        "arrivalDateTime": "2021-06-22T22:10:00.000-04:00",
        "operatingCarrierCode": "WN",
        "marketingCarrierCode": "WN",
        "aircraftEquipmentType": "73H",
        "features": [
          "WIFI"
        ],
        "wifiOnBoard": true,
        "stopsDetails": [
          {
            "originationAirportCode": "HOU",
            "destinationAirportCode": "TPA",
            "flightNumber": "653",
            "legDuration": 125,
            "stopDuration": 0,
            "departureTime": "19:05",
            "arrivalTime": "22:10",
            "departureDateTime": "2021-06-22T19:05:00.000-05:00",
            "arrivalDateTime": "2021-06-22T22:10:00.000-04:00"
          }
        ]
      }
    ]
  }
]
}

Aside from that things seemed (idk still not consistent) to work when adding these headers:
'x-app-id': 'air-booking',
'x-channel-id': 'southwest',
'x-user-experience-id': '8731fe8c-7b95-4c3d-951a-27e757d56b64'

Also, 'ee30zvqlwf-d' and 'ee30zvqlwf-z' seem to have changed so I did update those in my code.

I can make a PR for the segments change if you'd like.

@redfern314
Copy link
Owner

Sure, go ahead and open up the PR if you don't mind!

@RayBB
Copy link
Contributor Author

RayBB commented Jun 1, 2021

Heh I noticed that at least on chrome (doesn't seem to happen on FF) the SW site starts giving search errors when you open the dev tools. I'll open a PR later.

@RayBB RayBB mentioned this issue Jun 2, 2021
@aaron-pham
Copy link

I've been playing around with this - it seems the headers are only valid for a short amount of time.

I had to do what @RayBB did and update all the ee30* headers (I also seemed to have an additional one: -a0) API_KEY and x-user-experience-id. Seems like Southwest is making this hard on us!

headers = {
    "content-type": "application/json",
    "x-app-id": "air-booking",
    "x-channel-id": "southwest",
    # Edit me
    "x-user-experience-id": "723bb53b-193e-48a4-818c-5bf8af51fcb7",
    # Edit me
    "x-api-key": l7xx944d175ea25f4b9c903a583ea82a1c4c,
    "dnt": "1",
    # Must not be empty, so I added a period here.
    "user-agent": ".",
    # Change all lines below this.
    "ee30zvqlwf-d": "ABaChIjBDKGNgUGAQZIQhISi0eIApJmBDgD4nWksBWFzbAAAAAAW_oC0AP5Mc6sz1Vvx8bQ7o_97ktI",
    "ee30zvqlwf-z": "q",
    "ee30zvqlwf-a": "PYTJtf4Pi6JTdTwNzRKmLKvIFbPgD5t6UtU2F-U7T9jBwbiLrIcGrFDFJE7EMDHiTzkgpfqJ2rd6BnP7R-7TU-S39aB5OU5dELfJy7TYbNwpR2nUkhKnKGPAWCAkpzc6Gaumv0TeBiYi3I6mDjfm-MW3cy-zB2uepkYsi-CdTZtRqmBm57DqLzniHXyHDsKjvXEaHPjzXWtPLI3j8UpYev2M29-Hnazk48qNUt42EHbHHoh6FhvZ4S_8li9Cc1BUslzW7BumwV9FM-RWi9XTwmtyWw8dNXJ4aIJtAHjWAKATNOTp9l6dEHwxiIEsqr0t431Ebx_CIBmKIijtHO2RGnVwPznnOnfi26zmJa-YeoqxZRnfZsK-ySxzwE0GIcGKn1U7jN7KyYN0h6GKUc42rB0TIm54_9yCJf7u92igaury03jlGSCOoogaYWjM18b_dtaI20AYzayotM2W6yRLh5Cp6qjpx_hB5aK6I_HZPNfhjlCG_4l9Wh-O6B__J=rKdGJZ=9miuODT-jt3qNL8MNqFI3L44XNZsGLdqXuEPF883DBAYz2D-27cOiNEyHh5MhUM-Hj--w1I_mSPUzBj_7xiH7kJ4B5WZbAC2ZvnlC2_Czsl7=pNEObsyvIErGmNZ2=HkL=g3KpaLp-h9xIHKwkI0i=JJs5J62e-CzG-3dcfAPspedidqvlDXAjocb-VJE0rZ6Eb6wR37uxtBfSsWqXGXIqoThnXK=I76qU2XRtzB3haaLSoGvoWsn_iAjEiE80y5It6mqjedBTbgg7VtT_KM8CVtXBeKDsSOgk-V6T8zKI5v=udr1IyZjpFAo4fbCHpSYLKTm8EzcMH3KUrHEChdOC-MYeWA_DucTJMFBEDnSGaDaiAXOhJWqw_vAP4MJNDxeFHA1S0rRaVh1L4guU89eOOwX0EqOr1noUR7R9bVif6JoXWbsqyJsPsxjoDiv=vbMreevlvj4=Pn0zIVcWsLzajY8P70E6zhczLwkBBHWsRv5kH0UBL-ZcE4laXnpS6rZ9=UIatX4OeXECDWgY8Y2dkql4knZ3vxJgvkhW2bXZyrefjEpZEo8nHnusB7MO=Rrd6Vqwo4dx0Y_Zrufc-EjCIIKgi4ua_uOA7MODSV9XG9wgCdiK1esE4RtyW7RCxvx_Bpy9h=NG_FS4_T5d5Lq4IC9vcowsKK8CfG-E=YhXEW0vOgxSbcSrO2YKKr6jJvND=Dk-KGvLCOD_-DH1m0CpGJjF9Np8CX_Eq5DMKTc_pJW-DHnmqsJvH6dIZuZCCCNBAk=HNfZCW3jKEoZ_=KgZ7FgG5c-rs3fpXcJFXujhfPUBY=g157oDqrwW0V0PDdTwfNq0a5_VgJdxmKuT4DtJODYMHI8xwkcYwVp1RjcbJczHHRqHOWE4HWVuW169==KD64E3CP4oN=z4Ro6k0Muh38tP=5V9BmG6_VwaM8i7Zoh40Uw5YNm4nX2mj=P6VkzBHcHi95g2mCPZxKr22Wbx5ZBW4K0swuVZCyAuUtdCcukpAJ6JDPkXqjlK2Vk2jRqwgHszqgK-dU0AKh8Nu2PEU-T1G21PKvcFqyFAUEB62X8kIqTI_aSoDuBegm97KPWB-puP4wutUxcJKM0MIGf9hEcgjSeZoM0y3K6tpedlkOkd3-0et-YfwpJUYo3NX8cVWsHz3-JO_yyAevOrl0yUkVUwBJq9B4up=Oy120J-KhC3fnMBoityv-Z8L3XA=dc28y2XDIx5qrAli4=6rdBKDhrujW5P=OyugfTy8MWVqA3ww4ZbugDnUs1yP4DLaWELMPcM3LOv72kfVw2ggVzWldHcJ=4eoJ_zSo8t8pPH=aPcEpFTA=gT_KXvYkNEdhq=l9W_FmV79g53=YXk4l1MaZM59J0L30rWK39f2LdImtZSXdfMhtc-yxESDlu80MbCkrqwA6IxMNodxms-IsniE=mFCsk_2lccB1RlyWvcc3AyHWHfW=YF-GK-m-h-Vwc87Bb6B60cWyqotF7tIuGEWDKAG_uxZXVfVRlIbWW2VgizZK0HwcH-a0P9NXpoKdNVBO2hYLDw_HT8111tOl_aSlGL=6lyk9Os99tJZ8NqUZ2Zr_AGj6YlbdCZH-9aygv-G8Kv1VrV0JStF-SttCTUZjvTLw2wAjr-xD0KXzfkyPemm6Rx8AEosm7eZeftrF-pLFLp36mRZ4jNYhP-Zr3JtdHacOtcBxMOI14p0FER5yrIHyBi2W_W6DViMbdMCzEFx9LibpflK8u1PArHslGtDtvPWAKqGeB3dP8m5cYgn4I8J3OV8xdMLL7B1tKJLckePafM2ob3YoCXunTMbwaKApXnfAbvPO=NnybFuHRBx9UhlnC7oz4ySKeOeIPpPArPU0CiSNj4nmCMff4GPKvkT_AbUWx7a5tKZ9KIy2FP4dVkjTVyWDIik-MX_TU3SxbOntUiD8AZKTrgOTIR9Hoo3j1bEGcxBz=rIuO0BSZKBbtimNLDu4xUy4IpuYkYTv_tC=q59GfRzI0_wsDsMhAMJeJhmT1Jn8GLIfnUjvl4zcGW3Zt3D764-yXwYnjgKLTPJqt_ipN2up2JElS_kMyXRh1WE6od6a1rA7LtjYYHNJbMtkJO0ficlsdrRjIvmheHYRJRp3Hl21aAbA02jxdCPMJ0OcwC62FFjZR3U=MDb1vch8Ztze=9YD1viZPVobI9chO4oOsrALqwWC7zu0DVv5kdt50TOzHPuuc5DB7dlT4lNu69ef9faevr8K9PZ26jD7nbyKmINBrB7hG-Wnf2qs6AmG8J1vhYiD=24q-Z8wYiIR=9ljr0LTqzo=78U_UUe8LjSM7kb49GT5NO44HI72JOwl2-kmO3xBy1sPrlcnu45=KdjSiVF=N_zymzyvbi6Yhr=gtzx9WNmV=hAxIGK66217x-VzL2ZBZMTiMoksXeReaTaLnDOZZ6VyMDZ6mIEhFnSU_vqPBlBzG1r_xcCt71o27F__4-m73vheihq7xmlXrleqUoX-mGJwMpC2UzH_wjyRqeaX6g65uSDKDDizOnxFoLVp6F1kw6weWvnAAETWxYvdSa0C7OEMlEnvp3IxcFMEek3GaOPgBgwXtXsH39WaZcj_9iI45FALxXEFNf0wEBuGsMVTYRRl2DsCKyR4OKp09=-i_noPa85pI_9xyTTc4Kam2gaGHoJKZa1LSS0iEnxBewwJCnh84nYppD_pomkMmUDNE5i93-3t3sm=Do20wyY=qV74tSUjnstdnSRtLZ_Eeo_Z38l1TVsnYr7de41Toy2TVChu_u2G6-qJEwG=nG3H2_Dc6ICWT4GN2KVW_BKwbr8grDy=cOtssZmRuFfLtk1yi_vYr5RxD-uJj2YOUClNxok7i1Ve6vwdrb-Oq8IiYz4PinmUhzBS2zRUFupiw=YPoIda4GLsgDAVFv3o8XYFPJYoWfITV-Z2ZUb91lCBaIKEhrwqwhuZ7v4Tfw6oda9rxvdk2XUP-S5gUx_olnhCMZd8yyxiV=gUvNiVkbBOP=ef4AAtpL6_ug927Pt4zF66LxkU9nmFs60YOYVoMIOln5JI2ruTmRUdrE1yEBmB1nk_4Cw17g2ufSw0AhbEitcITqi3zZkB=PWe3r1UChDusNz3yCdgHm1Ww09HYne0l59NC=0Abb-dXEgZt6-MrlkT9folqzAhYilp6iLNjKjaFOd=og4ZxKNU5=ipalkNiH9cc5435OI4oMFjTL1WoPUdUkXK8uUfM8Vq-62fNinGOobD4GZmdA-mgspXlbut1iztABRgUl3YVWhlJIiUtbGF-xutilXlH9zfuofRi146j3djFxd-E_sF-JMvfsEwrdX6UqbB6Py17T6ZWEq0aLX_gA7kG=r0yCfqNcxr=svcAYDp1H6qMVorXWZY_o9qO-MVdpv9V_Wt6YEwf9Gc9xbJd3zdTd190a1eN-5s=Yd=ns11i6ayL1GZP=CvjWSUcPo2nP_slUNIkuFz1kmYa69x7Z4kzs=qAnFuFx6iJs7nLBvGef3C_-55sBIdXjyCrUPSq928Fzdl3pxdWeeOYq0=ElJ4pNhUGtd09BCw_OOGwDKh5yGahabEcH1esyXzYBcph7F1zl9hd4rqper-_rxyHreIFd2Nphe-GiA28m-2oz23f4Gv4DIHwWf9MRJ7EkD9xLyR1BPw7OD9slGThFtC4CHhJE9HEcCjib2LfPeRGZewrCrOzWr1Dp_4ieVAIKC=et80b-yzdE4WHVcvf0RqjUt5Vv3B6-x5B9F3L7hggj_yygTUoIVNlvhrqF4Xknw4sbj7o3s1CCpu6Hn_eOelE0=ZRasjc6wDFp-AidHR_64_E8=K8V2nCZrJO4uR18dL12yCfjcPJl8Y7MDz4d6AeGBY8IPsyuozWXwtU9xrt6ZvvUs5lXif8kSm6tOhNJWttzlRLBpCvNA_G9SRkGYhGdF23xBfoklJhES5waPRxPj6Ju-r7r9Oplgo2sFR=DDlWzt8l1D8aHd4M7LUMHCi1dSPjCrMRgf4C8Nw4-NzXuNY3RIUUlFEsMhjRWttzeiIn2y8NsXFTs48EtvGZtOLOxc4m86GdiU6UHXbL4aDS5eUO46sy=jA4V9IygC5EgrG-zbMx8dVF5H=sAHdZAYaXitNp3xpPMhFMafr3XbnlJ=TecY3lowyKd-D3_Wul7VGf-=V=57-LukRaPueHiwKp_UtJa22GUkN7=lB1_ZBAD3F94NqanW2=MHxK9ErI6jw1OOIG4gUIe08dkuysIuL1NgozPG2WeKsSENpJU8N6zLy2yPbpkzN21wrflIg2-w-Wkm6kJvNYvErXZU7mxNESmwSWw=Ds6D-tBuIaod4X3mAvMAltMo5cNr1oSRgw4u8bcG0DdpMomo_=OVhI=Oi112KC0qYTm_CGgCma-e9S8hmWnE-kqb1pqt8nSJk016Xeqi0e51dMgBImo1_Hpn6TE4Na3tEj8sg8nGc3nEeAg3IV8i5Uk09Uqewu8ok9j5oZ2pRWLUAf2ZBEg9vayG6lLRW4mjVhGAJtWcINC5xEFHpH3-XGnW03MKFdDz2YB9z15O1Ybb---yF4168-3XAckZb01Y29XedRRxHnAxE0uqst66LzXm20gBYB5SDJmHIHKe0qfZDIVyKE_UfB0AhPcWFmvcBl6Fg27gS=0kZ_nhZaht6MIdaHYrwhC=M-bmpVIGeVSTg=piRjMv3mZOMMTm9MR-mUp_qYBA5JBzmCgTmV0VB3xYD4lqMaISjse9UewAREE8_TOnUMsxZ_sw=ne6utwrjb97jh6OghClKucBamq=HVGdHn_aMXaSxTBgOdaTx7M-FMPdI_O2a9NHwRGZIsz5jZU8HOvkogB=Wa7mPcdBtA--6j7Y0YUTPZC9cFPzaqdZuBol5_nyP-RJqOGL8ahqmJzKEkndr4pWk9R3EgZCiujZUuRZ_P-g1Z5BRUZfm2XuJpszJ2hfV59qeNoUZZ3i20_6Gp3HIDfPUhNEBeOxKVdR0p3UqCsLI3JTZLxZnRpjvNMa6wY2u-PvcR8gMZyp_783oYROFkWYG_j_wW1md_sIttIftugJ8tjo4BqCHHfBBt1CtVIun4UM-kep22-NJI3KWcgNLEaD4kj=4boau2l6AkWcWgaWZ6qHLshAKoAKGnvxfTd2FYxesYL6r-mXndAMW_aWooiR5mc_taW11vps2JZdnEB_aOE0kquOfrKobfBsvZKxSlz0oVkw16AFCJu7BpnswoSGJXrNm_AYDMeuS809uCLo36HnhvrJMXGDpXJpf50BnwwrnJnLwp5814AY7Sif6SD5y=21lySFmyFzyi04k_n8FNvrN99JpZBMB0nVvIHjqs5eWycU-M-1HC5DPEjjFdceALb=Trrk_eZnEKfRdrfS0ttKEcNuTi3jh6mJ35cwS-IqpSMP_atI85xso3eDDbp8-HxMOAFG9LrRnv7RIOUMjzx9cjr8IPNalvX=dy608LZJlX9XrnUWOguje=EEUPwxVH4vdGODUra0xdv6uWbuLavriSd3F_FyuGnGYA4V_2Tp03k0yYOHJ9S9wVZdiqU3nvxnwHrUaULgsC8d1OBG-7uS_TdqA2EV9z840tShX3AZUoeVWFlzSYwG7l3Bmxb7BP2fFzPtBu3EApCWu0KTKsAh-nXwMScGkF21nCOIEzJ9ZksoLUM3e5TWEGcAf5OTc4EzGFsp-0g9pjsigTK=LMo817zhWVf2DtCq2g-oS0sLsAlbp4PT2oOgZPz8ZnwjCaklY==Bi-O=Zn_S8WbZqSTI7SftoDVEBT7sb6DxB-LJKtDWRkjjmZAtqjdlNTMMgiNM=H5joyEcOUdjg9UnGMp75MnIDS8SOXnY045WGOdMygIgr3WUS2VJfaeR-snWyZwt3vDEqg-lXKYIrY-gc-Tcb1nRr-Im-Pi6rF0XbFY0s2Kc-GlgvT75SjvV13RX0YlFExS4p-HrJpGvwW3SOLVJ7KZy5bIjVVbRcueMpNjrAHLFrlnzuW4x23E--vIMgGD4vP2MgEUURMv4rtab0qVM7Y-_a-qS2O25aw3P33Me78VzJZB_D_grf5g6rOm878ac4k44oFi5RI9jCfwZTOV=or7kJmhcL-HHijjmC8GHv_-HUV-zTmUNxHan8f6i7WbbYhSkD58ltel_BXIpP0dAh2LrM7HECPlRADxmCzihjxtvhZJHtJHOMsCS4dI4JsLxfVrpOS=0ipsFMIZODBl1XnFSiv9AcUHv-EJGcD8Su5mCUP4lZzww9XxxhuLiudVcBZcgNm_y=DccWs_4_3vzOXWOMOm6uL=t3WAriFRn9o4ZnJDxFpy05L468O7RwtKeUO3Ux_93zIKhe2emPSbSgHE_NgVEiqI5RmL97EOiyqbqiLsfi0j_OcnF2BNkRfXKWDPRyUj4-4_CS_IiIIxk01l6z=3fSJlHpObtKtJvT02jXpz4nBdLOrgIL2eAGwa6M1qe9WLx3x6KLp4FwVTleZuc3GBBefdRylSLndZFDUZt4mVo9ixiyoWjyDEX_ttP3n7FzdjS5N_XJ4anchfCjyOa0LZA5=zyVwbqFJtjd_2l8-gEAMgMgBmEI97BqLBNsuEFZSvZoObY6E_1Xtjc-a2=n0CWu2HFcUvtPA8hycMj8IliZs3z437Rr6qp2=MpaJLODpVvc0SMH0qmZ=61rEiw9oZW2YKSD9UF1wYqbaO4noEOA=zjsRosa741-YAv2ewg6dVu_9XOVt_-Ni4-SDV0AsUmTSmykgcBYYFgj81BeknI6=1H07ck82surNa1qah4ydpRdcG9J2zfjcwIaBwEZtRjp7_hW-DRSi2BuTtZphS8aJp3fAWYk076Nndr4IMCCh0IptvEH9vnUf6uusbyRY6xmTZRzpw6Xs=n_c7UTASiODS-_Yi7MYKdJPZyxB0boyziRa_J8pVBdGI34MzteTO790VvtcT-r2DsWiPaGet=aoWqA0LrE6ifBS3a-n_nKES1xPKV0WzBz6u=ICldR9RPf9kSGWnx_plgCaPTk5skYxdqarCLDdfUoMMoF27cknFfubi0cK3=m1ZBx0=-FEqyz5pbj3fnciwYvMcLA==5hT3Dpfachw7cB_He2aG5nEc_6pnNipmNnTuKPfaW4D64XWxw_XY8CVgPEIVG2aU6e695GiAIF=mPdMo0wab6=yrKrqY8C0p0w0d1Nmv4OtpMN36X9NqamV5aF0Su80WgMeDquNHKtiazf6t82l5Wqb-wDspLAW4F7p0ZMX_Sn=5m9kMfqL6vtALUUVa5pOjqB9cR84rz=2C0wz8MfeRWbNHiJWkb7lA6hqVyZ6MWy3nR=pErvgXUOYU4OIR2Xe5gnjjMz20vZUadG-sae0nGXcRk7jCy7wjiPxXWIc8=DDkGPm_cawuJ5wHSJD0SY892Vont",
    "ee30zvqlwf-b": "juzi7n",
    "ee30zvqlwf-c": "AOATKnJ9AQAA01p5i4zVnDieWlz3lJvzFSAUoqHQgMwmAGedIPidaSwFYXNs",
    "ee30zvqlwf-f": "A2CCKnJ9AQAAN6yBvJ6sYvim__NSpvsjQDci37HaWk7FYYnZ2DICffM_qBKwAUM66ZKuci2nwH8AAEB3AAAAAA==",
    "ee30zvqlwf-a0": "K=N5l52ljfMsN4-vf3ClOhpXC-pgP6MfteRLWmj4NMTmL=Su-iHARuchJsSdjGh0eecYwKNGvChr4GwTlj-q6=0g59sKJbNHtfYZtAsPYxUm6lj4GWYHPnZ9ld99KGFJ=GHa0aWL=Rjb9jqNbNfz7hdcHG64XG7dp3VB=JZ1fgZteuIqmhbtMegs4ZMNGLNv0=s7EUiKjyRSyek0HFsfouZ-LxN3KDY5LP-uovN",
}

@lzh414895156
Copy link

Has the request header been resolved?

@redfern314
Copy link
Owner

Hi folks - I'm mentally switching this project to abandoned, unless someone else is able to come up with a solution to the magic headers and PR it. I've tried a few different methods and from what I can tell Southwest is just too sensitive these days. They can always tell if you're scraping - requests will just get 403'd. Sorry!

@RayBB
Copy link
Contributor Author

RayBB commented Jan 24, 2022

RIP. Thanks for keeping it going as long as you did 🙏

@aaron-pham
Copy link

Hey, I don't have time to make a PR just yet, but some other projects have figured how to get the headers programmatically - see: https://github.com/byalextran/southwest-headers, you could likely have this script run, and grab the headers before each search.

@redfern314
Copy link
Owner

Huh... I spent a few hours yesterday trying to do exactly that (even down to using selenium-wire), but the headers I captured weren't working for future requests for some reason. I'll try this out and see if it helps!

@aaron-pham
Copy link

I spent quite a few hours attempting this, and could not accomplish much. The headers never worked out for me, so I played around with the chrome webdriver and seeing if I could actually get to the SW search page.

This ended up working which gave me confidence to just use the webdriver code to actually fetch all the data, but the body of all the request looks like this below:

I'm not sure what kind of encoding this is, and decided to stop here. SW likely killed this :(

b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x00\xed]ko\xdb8\x16\xfd/\xfe\xec\x11DR/\xe7\x9b\xd3$\xdb\xa2\xce\x03\xb53\x99b1(T[\xce\x08\xebXY\xd9n\x9b\x9d\xe9\x7f_\x92\x92#\x91\xa2$R\x8fXV\r\x0c0\xa9l\xd1"\xcf\xbd\xd49\xe4\xbd\x97\x7f\x0f\x16\xee\xd6\x1d\x9c\xfd=\xd8xn8\xff\xeb\x93\xb7\xd9\xad\xb6\x1bra\xe9\x86\xdet\xf7\xf4\xe4\x86/\x83\xb3\x7fG\xff\xber\x9f\xfc\x15\xfe\xe7\xe0\xe1_\xe3\xc1p\xf0\xe4\xaf\xfd\xa7\xdd\xd3\x15\xfe\x84\xdc\xf1\xcd]\xed\xf0\x1f\x03\x08,m\xe4\xe0\xcf\xe7\xbb0\xf4\xd6\xf3\x97w\xc1\x82\\\xbf\x9f^\x0c~\xfe\x1crM\x9d\xdfO\xf3\x9bB\xbaJS\xe3\x9b\xcf\x05Oe\x155\xf5\xe7p\xe0\xfa\xe1]\x18,vs\xd2\x7f\xdc\xe1 \xf4\x1f\xfd\xb5\xbb\xf5\x83\xf5\xd8\x0f\x9f\x83p\x1b\xdf1\xbd\xbe\xc2\xcd,\xbc\xcdV\xf8\xf1\x84\x8e\xcd\xd2\xddl\xf17.v!\xfd\n\xben@\x9d\xfcz\xb0\xde\xba\xfez3\xfe\xe6\xfa+\xf7\xab\xbf\xf2\xb7\xf8\xd1\xb7\xe1\xceK>\xbb\t\xd6\x9bm\xf0<8[\xba\xabM\xea\xfa\xb9\xb7\x0cB\xef& \xcdq\x1f\x91\x8b\xb3`\xea\xff\xc8|2^n\xbdP\xf4\xc1\xcc\x7f\xf2n\x97\x17\xeeK\xe6\x93)\xfe\xf1\r\xffP\x17~\xe8\xcd\xb7\xc9w\x99Q\\\xefV+2$\xf8\x9b\xab&Fo\xe1=\xbb\xe1v\x17z\xe4!\xf1U\xdd:3M|\xdd\rC\x1f\x03\x1a_\x05\xf6\x99N\xae\xae\xbd\x1f\xdbt?\xb6\xc1\xd6]%#o \x1d\xe3\xb1\xf2\x1f\xff\xda\xde\xec\x9e\xbez!y\xc2\x01D\x8e\x81\xef\x05\x96\xa1\x0f0\xfaK\x7f\x85\xc7i\xe6>\xd2\x0f\xcf/\xafn?]~\xb9\xb9\xbd\xbd\xc1\xdf\x19\xff>\xfe0\x19\x9fO.\xf1\xdf\xd3\xd9\xed\xdd\x94\xdc\xf0\xfa\x88\x17\xeev\xff\x98P\x87\xf07\x1d\xffg\xcc\xe8\x13\x9f\xe9\xba\xa6\xeb\xfao\xba\x83\xffJ\x1e_|\x07\xed\xcd\xeb\x1dft\xc7\xc6{|\xf2\xd65-r:\x9b\x0c\xd8\x11 \xbf\x1c\xf5\x7f\x91\x18\xa8\x8e\xce\x10\x1dN\xfa\x95\xdbel\x06\xba4\x1c\xf0\x0c\xe9\x836F\x864\xfcz\x87\x15\xdd\x11<{\xe4\xc9\xd7\x8f\xef\xc8\xbd^\x18\xf7\xf5\x81\x00\x86\'\xad\xffx9\x9fa7\x9f\x87\xeer{\xf9\xdf\x9d\xffL\xc6v\xf6\xf2L>\xb4\xd1{\xfc\xe9w\x7f\xe9\xdf\xae\xcf\x037\\\xec\x1d\x80\xb8\xe2\xe6\xa2\x01\xd3.\x82a\xe5=&\x06\x0b\x81\x19\xfdlr\xc9\xc6W\xe6\x7f\xb9\xebG\xefn\xe5\xae\xbdW\xef\xec\x1e2?\xff$\xf3r\xfe\x18\xd1A(\x9b<\xd91\xa2>\xca\x9a*<\xa3\xb3i\xb9\xa9\x02tf\xe4\xcf\x1c%\x03Bo\xe6\rO\xdd\x89\x9b7\xd5\x87\xda\xa6Z\x1d\x06\xc6T\x81\xa1\xf3\xa6\xdaI\x10\xb0U\x92I\x1es\x82\xe4\x1d\xff\xf7`|q?\x99\x91?\x08\x9f\xc1\xff{\x8e>\xfb\xb0\x88(\xce?\xb3\xc9X\xff\x04\xdf\x0fgC\xec\xdaC<fC\xde["7\x19\xf2.\x11=\xe7\xf0\xe1\x86\xfcG\\|\x88\xa7\x97ts\xb8)<\xc6C\xbe\x9b\xf1}|_\xa2N\xc4\xcd\x11\x18\x86\x91\t\xccW\xeef\x83\xad\xdf\x0b\xbf\xf9\xf3\xd7\xd7\xf03\xbe\xe8\xe1\x99"\x8c\xcd%\xea%\x1e\xb3\x14\xe5\x98n\xdd\xednC>L\xbd\xdbbkYE\xd4)jl\x19\xd3\xa8\xaf\xee\xc6\xe3)\x15\xb0G\x9a3\xca\xa1T\xf1kx\xe6\xfe\xf06\xe3\xf5\xe2\xca\xf36\x0c\xb3\xb35\xbd\xe4V%^\x89\xbb7\x9f\x87;wu\x17\xf8\xf4}9\x00\xba\xa3\x93\xeb\xdf]\xff\x9b\xb7H\xfa\x84/\x11\xce\xc9\xc1\x8d/\xfdsN\xf0qf\xc3\xf3f\xe0N5\xd7\x0b\xb8\xa1\x854\x0b\xe4\x8e?V\x10\xdb\xcd\xc4[b\x8eh\x96\x80o \r\xd9j\xe0\x17*\x81,\xf8\x08\x0f[\x0e\xf8D%p\xe0\xe3K\x91sZ\xe7\x8d\xfaz\xd4\\?\xc0\x87\x96F\xa7\xff\n\xben\xe8\x9a\x99\x0f\x9d\xd8\xd7\x8b\xd4Z\x16n\xfctb\xb8\x7f\xfe,f#\x15\xc5\x08\x10\xbc\xcd\x9c3(!FLS$FF\x10\xe2[!\x82\xa5ZDA\x7f\x00E.G:\xd0\x8a\xfe\xb8\xb8\xbc\xc9\xb2\x89\xa8\xcb,\xa7\x03\xd2\xf2C\x00\x80>\x92%\xb9\x8a\x03C\x1b~\xbd\xc3n\x8b\xd39-\xcb\x8f\x02\x14XJ\x872\xea\x03\xe2\tIV~\x1c\x18\x99\x12\xf9\x11\r\x82\x1a\xef\xa5nYQ)\xe37\x84\xa9\xe7\xce\x15e\xcc\x97\xdc\xcc\x1b\x9e\xba\x0fwP~\xd4\x80\xa1L)w\x12\x84&\xe4\x07\x1e\xb3!\xef-YJB]"z\xce\x98C`\x17\xc7\x14\xc2I\xb5FZ\xe2\x19\t\xe9e|\x1b\xdf\x15\x86\x91\x10\x14\x9ac$\xd3\xdb\xc9\xc5\x97\xdb\xfbY1!\xa9A\xe2\xeb\x0eZ\xd2Z?\x06M\x8a\xfc6bi\xb4\xb5>\x0cZ+\x14\x92}\xbb\xedg\xa4Q\xfcZ)\xa1\x90d\xd2\xcbPH\x93\xbe\xc9\x91\x81ZY\xcd&\xcf\xab\xc6&I_Za\x93\xe7\xf7\x9f\xb2/\x073\xc3&\x81\xec\n\xa1\x18\x0bl\xddP\x86\xb3(\x0f\x0cm\x98\xbf\xa3\x83\xaf\xe8\xea(0oh\'\xb3>h\xc8r\xc9\x83\xe3R\xc2%\xa3!P#1\xc4?Y;\xb5\x84T\x12\x08X\x8c^4g\x94\xb1\x18\xbd\x11\x07\xee\xa0\x9d\x96\xa0p}\xf1\x90\x87\x02\xcb$\x91\x84\xa1\xc6\xf3\xb1$2f\xc4:\x9bG\xc6L3\xd2h\xd3\xa5\xc8N\xa3!\xa8b\xa7\xac.\x84R\\\xdb\x8a\xb4^5+\xb5\x04\x1b}\xaaV\xda\x04\xd7\xc6F5\xe4g\x13!\x03\x82\xfb\xcb\x11g1)\x03zH\xb5FZ\xe2\x19\x90.l\x8dv\x85a@\x18\x84n,\xfe\xd5Y\xe87\x80f\xaa.\xf4C\xa0\x19o\xb7\xd0_\x17\xec\xa4\xb5^\x80]\xb2\xcc_\x0c\xb6\xad9\xaa\x0b\xfb@\t\xec\xba\x0b\xfb\x8dx6m\xad\x1f`\xd7Y\xd675]uY\xdfV\x02\xfb\xad\x97\xf5E\xabD\x92\x9a\xcc\x11j2\xc3"\xcb\xfa\xd06\xda\n1\xea\x8a(\xbb\x18\x0bb[\xa2\xee\xb3\xeb\xa6\xf2K\xfc"0\xa0T\xc4@\x85\x81\x81\xe9\x88\x81\xa3\x8d0*@\x81\xa5r\xa3\x0c\x953\x15\x02\x8c\x0e\x0bL\xd9\n\xffX=\xb2\x85z(k\xa9\xa6\xb4,Cud\x19J\x93\xff\x8a\x84\xb7\x93\xb2\xac\x04\x86\xd9]>\x0c\xdcnT\r]&\x86\xc6:\x032\xbaL\x1d\x1a\xd20\xa7E\x8a,5\x1a\x83J\x96\xca\x0e\x91%)\xcc\n^o\xe5\xc2\xcc\xd4y\xab;\x840\xc3f\xc5\xc7e\x88\x08\x17\xa4\x81\x14\xa9\xb8\x0c<\tr!X\xa4\xa5lX\xc6\x1e\xebb\xfaFP\xe8\xc2\xd2t\xae\xc0\xf9\x88\xbby\xe9|\x1c~ld\xd0\x92\xd6\xba3huH\xaf\xe5`\x99\x92OzS\x81L\xa0\x84\x02c]l)\x8a[\xdb\xb25#\xff\x1e\x9e\x02;\xd0T\xd4;\x9f1Zw\xd6\xe7\xe1\xe7F\xb0OZ\xeb\t\xf6\xa6\xa9A\xa3\x11\xec\xed\xa2\x86\xc4\xd8#\xa8"\x7f\xf0\xb3\xa2\xb7\x94?\xb0\xb2\xfc\xb1\x84[R\xc0q\xda\xdc\x93\xb2\x04\x1b)]\xda\x93\x8a\xbb_mSJ\x88\x86n\x9f\x19r\x814\x8a#C\x1b\xee\xe9\xa6T\x0cC\xc9\xae\x14\x90\xde\x96:82\xa7m\xa9#\xd0?\xa7m\xa9\xd3\xb6T\xeb\xdbRV\xb2J\xcdO\x19\xcc\xe25\x99\x02O\xfbR\xc7\xbe/\xa5\x8c\xf6ic\xea\x887\xa6\xaa\xf9\xf6ig\x8a\xa2\xdd\xbb\x9d\xa9\xea\xd1\x82\x16\x12I3\x88L \'\xcd\x14\xe4XgB\x04\x85\xec*\xee2\xbb\xc8o\x08\xe4\x98\x80\xe4\xe6 \x80dI\xbf\xea\xc8\xa04\xe9om;\xaam96\x19Osa`8\xdc\xa8:\xc9\x15#\x83\xa7I\xc9\x8c\x13\xd5(A;M\x05\x9dR\x92\x1b\rA%C\xe5\x12\x1d\xb2\x8a\xd5\x96\x0f\xa4\x04\xd5\x8d\xd7IojT4\xde\x12\xc5Z]\t\xb0\xe9c\xbadN\xce\xc1\xb5@\'\x9d\xf9\xa4\xc7\x94\xf5\x18\x1e\xb2!?\x9d\x08H\x16\xa2\x9c\x8d\xc9\x126\x01\xa7\xc7HS<g\xb3\x92\xec\xe2\xb7\xe3l\xad\xa7\xe4\xd4\x1e\xb4\xa4\xb9^\x0c\x9a\x94:h\xc6\xd2hs=\x18\xb47\xcc\xea\x8e\xaf\x96\x95\x98\x82\xf9Y\xdd\x0e4[\xda\xfePM\xf0f\xee8%x\x9f\x12\xbc\x13\x91(\x1f\xfd\xd5\xbf\xfcn\'J\x03f\xc2\x14E\xbaPDc\xf4\x88\xb0\x88\'\x8d\xf2%\xf6\x14)\x91\xca,\x16yp\x07\r\xb5:\n\xac\xe8\x81R\xc5\xa5\x0e\x8eA5*9\xc5o\xe4\x07\xcc\xfd\xa6\x8d\xe4\xdc&\xad\x89rnu\xfa"\xcf\xe4\xdcF?\x92z\xbfc\x10\x86\x11\xfe\x87^\xfd\xd3G\x9ae\xe5.\xc7)\x84i\xa0\x91\x86\xa0\xe2Z\xa0\xe1(\x15\x9a\x82\xa6\xa3\xbe\xce\xff\xe0L\x1b\xccQ\x8fZ\xeb\x07\xf4#\xa4\xa1\x92\xd5\xdb\x82\x85_\xabd\xcd8\xb3\xcc\x8f\x94\xc0F&\x04j\xcb\xfc\xd431\xf3n\xd0\xcfik\xfd\x00\xdb\xb44\x90\xbf1\xa3\xe0\xe7\x06\xd4\x9c\x92\xcd\xa1\xac\xa5)A\x8f\x9f\x15\xbe\xdd\x9a\xbf#bZP\x8f\xca{\x96f\xa3\x88\xe4\x08\x006\xe9\xac\x8d\xec\x96J\x04(\xb2;\xda\x99V\xf4\xc8\xfb\xdb\xfb,\xc1\x88\xbb\xcf\xae\xff\xeb\x92\xeb\xffB4p\x7fe8\x86\xfa\xc8\xd0\x86\x8f\x7f\xfd\x7f|/X\xff\x8fa(\xcbG12\x8a$o\x03@\x0c\r\x92\x93$\xea\xd0\xa0l\xc5\xdb"\xe7\x8f\xc6\xa0\x92\xa52Cde\xa8\xb0#\xa9\xd9\x80Q\xc3v\xe9\xcdjK\xadY\xdb-\xd1l\xd1\x18\xa8\xa9\x05\x9b\xd6\x8f\xac\x94Z\x86\xdf\x86Fv\xe9y?\xb3\x96/=gw\xe6\xd4g\xb9\x0e\xfaru\x14\xca\\\xb9\x93\x18T\xd3l\xd7\xf1z\xfd5\xe5rx\xc8\x86\xfcd"X\x945\xe9\xe5\xd4\xa2,\xf1o\xba(\x9b4G\x9a\xca.\xca\x1a\x82EY\xda\x17\x86\xcca\x14\xba\x12\xb2\x014\xdbl\x84\xcc\x19\x9a\x8d\x14\xc9\x9ce)\x05g!\x94\xc7\xe3\x0bw1\xaec\xd1V\x1b\xfb\xa4\xb9^`\x8ftS3\x1a!\xf2&\xd0tE"\x8fL%\xec\x91eYj\x1a\xee:\xde=i\xd2\xefis\xbd\xc0\x1eZ\x8e\x06\x1bY\xac1pC\x8a\x8b5\x08(a\x8f\x9f\xf5MsjD9\x97q\xae@\xd9\x9e\x92-\x12qQ67\x18\xe9\xb0#%\x05\x98\xfc\x84SI\x81SI\x01&\xc9\xe6\x97-)@=\xb4\xaaBAQeZ\xf1\xb4Q\x9e\xb7\x0e\x15\x15\x9b\xc8\x85;\xa8Pj\xc0PE\xa2\x1c\x1c\x84j\x12\xe5S\xac)>5\x92\xfe\x9b\xb4&N\xff\x85\xe2c\x0c\x0c\x9d=\xc6\x00\xa3\xd0\x11\xaabCmT5\x87\xc0\xd0t\xe5\x1c\x02\xb5#K,\xa4\xb8\x934\xa1*\xe2\xd3p\xd2\x08\xdaIk\xfd@\x1b\x8d\x90\xe6\x94\xe4h\xe7\xca\x10\xa4\x01\xc5\xf4n\xc3PB\xdb\xb0\xa1\xad&C\xa87Z\x93&}\x9b\xb6\xd6\x13\xb4\xb1\n\xb4JV\rr\xd1\xd65\x94\xbfr!F[\xf1D\x1a\xd3\x12\xa3\xdd\x8a\xf0\x18\x89\x8e\x81\x83@\xae\x96\x998\x98\x8df\xd4\x00\xc3\xb4Z\x11\x1e#\xd5\xa3\xe7hg\xde0\x9aM\xe77\x8f\xe4\xa3\xd9\x84``\x07\x93)C\xa4>0\xb4\xe1\xf6\xa3\xd9Z\x17\x1e\xf9(\x94E\xb3\xc9gF\x1c\x1c\x99\x16\xc2\xd9\xa8\x8b\xf2\xcaC\xf6\xb8\x12a6\xcd~\xde(_\x97\xd73\x86\xa7\xee\xc3]T\x1e\xd5a\xa8r\\\xc9\xc1A\xa8\xa6<\x1e\xe2\x10\xb4\x07a\xa0\xcbH|\x82\x1aq\t6\xd0Ew(;IZ\x13\x05\xbaD\xf1\xef|\xa0\x0b\xed\n\xcbN0\n\xdd`\'$\xd8D\xcfg\'*\x8b\xa4\xa66R\xe4*\xc8@J:\xc4vFU"\xda\x1er"\xdaT\xb1OZ\xeb\x07\xf6\xc8ijc\xcc\x84\x1aT\xdc\x183\x90\x12\xf6\x86\xe9(\x06\xb8=\xc4!i\r\xfa=m\xad\'\xd8\x1b\x86f6Rp\xcc\x18i\x86\xa2"%\x02XE\xa3`\x05\x9b\xa7Q\xf0\x0ba\x15|\xc7\xaf\xc0\xfdo\x90N_\xb9O\xfe\xea%\x9a\xff\xc5\xbf2\xe4\x8fo-V;{9\x93w\x846\xe5\x8cKw\xb3\xc5\xdfH^\xa2\xd8-h\xd4\xe7\xfe\xc8\xfb\x14\x86\x99\xc3\xedo\x825y\x03g\xae\x9f{\xcb \xf4n\x02\xd2^\xc4\x0f\x92;\x82\xf5,\x98\xfa?\xf8\x0f\xc6K\xac\x81\xe8u\xae-\xf2\x92\xbd]R\x89\xc5\xde\x113/\xf6\xe2\x85\x1fz\xf3m\xd2\x083\x88\x91\x81-dX\x8a\xd4\xd8I.s\x8e\xe2d\xda*J\x11\xd1\xed[\x08-A\x9c!\x91\x88_f\xb7_\xa6\x1f\xfe\xa8\xa4\x14mni\xb5\xbc\x14\xa9=\xa3\x9d\xe1\x89\xba\x9cR,\x19Rq\x15\'\x9d/3\x10\x9f\xbe^y\xe1\xdf\x90\x08\x8b\xa940FZ\xc1t7\xcc\xb0:\n\xacR4\xb31t\x92B\xf1\xf0\xc0\xd4K\xa1\x8f\xe7M\xbe\x96\xb0\xc5\x07\xd1\x19\xd1N\x9c\x94P\x14\x05\x15\x8e$\xf6\xecl.\x85\xa6|w$\xc7\x85;\xb8\xa6Q\x03\x06V(f+bt\x12\x84\xbaI\xf4\x84\xde1\xa9\xcd\xf6~\xe1\xd9d(^\xec\x12\xcc26\xf6pA\x0e=\xa1\xa0|/\xf9e\xec\xb8+L\x19%\x82\xc20\xb2\x80#.j\x86lMW-j\xa6\xb8EU\xa3\xa8Y\x13h\xb3\xc9\xff\xc7\x8fv\xad\xa2fHC\xaa\x1b\x92\x8a\x9b\x165\x8a\x9a5\xe6\xdb\xafU\x0bz\x80v\x9d\xa2f\xbaf\xaa\x165\xb3\x94\xd0\xaeZ\xd4\xac\x9a\xf0\x80"J\x05\xe3\x9a\xa5\x95\x8a\x9a\x01\x08H\xb0\x07\xb0A;\xca\x03\xaa\xf28(*\xa2\xda\x88\xf2\x10\xee\x8e\xc4\xfdg\t\x9d!}P\xb9\x88\xe1\x9a\x12[!UF\x866\xdc\xfe&U\xdb\xd2\xa3\x08\x06\x96\xd09\xd9]*\xe9\x04\x9e\x83CSo\x97J\xc8z\xa9\x93\xf22Y\xd6V\xf3r#u\x99\x01aR\xbe\xca7Hr\xbc\xb8\x83\xb6Z\x03\x86*\xe7\xc9\x1c\x1c\x84&\xc4\x07\xb3Z\x1d{\x8b\x80\xa0\x98\xfcj5\xf1qN}\x90\xa6x\x86\x12e\x06\xd8\\s0U\x8c5n\x0e\xc3\xd0\x8d\xe5\xea~\xab\x8f\xdap\'\xcd\xf5\x03\xee~\xcb\x8ff\xbc\x9b6\xd7\x13\xb8O\xfa\xa3\xa4\xa4\xef\xbe$@\xb1\xfe\xb0\x85\x1b\x1f\x00\xd1\xa4E\xe0\x00\xa7\xf9\x189\x9b\xabV+I\xe5\xda\xd2\x1fcAZH\xdc\x7fV\x7f\xc8g\xe7\x88\xea\xf8\x8e$\xb2\xd4\xab\x8c\x0cm\xf8\xf8\xb7>\x8a``\xf5\x87\x99\xe1t\xf4h\x11\xc9\xfc\x9c\x03CS/?GL|\x89\x93\xf2Qr\xa6t~\x8e.\x14dR\xd4\x17\t\xf2\xc2\xd4\xbd\xb8\x8bU\xdf\xaa\xc3\xc0\x9dy#\x99\x9fs`\x10\x1a\xd1\x1f\xe9\x18~{_\xd7\x95g(\xd4%\xd8Tb\xec\xe3\xbc\xfe\x18O2\x0c\x05%\xb1\xff|_\xb8C$\x80\xd3\x8d\x82P=\xd7\x1fu\xe1N\xe9\x8f^\xc0\xdds\xfd\xd1\x88wG\xfa\xa3\x1fp\x9f\xf4G*\xf7\xc0\xa8\x1cxe\x1bB\xfda\xda\xf9\x91W\r\xe8\x0f\xf2\xc4]\x8e\xbc\x8a\xfb_iM9\x07\x0e QF\xac\xd2\xc8\x00\xc1\x11\x06\xc7\xa7?\x8a`([S\x86\xb2\xfb\x1f\x87\x87\xe6\x14|u\n\xbe\xea\x1e\x08-\x04_Qo\x11\xac\x90\x82\xe4|\x88\x98R`\x1f?E_\x1d\x9d\xfe\xa8\r\xf7)\xfc\xea\x98\xf4G3\xde}\x8a\xbf\xea\xa5\xfe\xb0s\xea\xdb\xc8\x9cwc\x0bk\x93a\xd9J\xfc\x01\xeaF+\xf2\xc3V\x8ed\xb1\x05\xd5}[\x0c\xbf\x8a\xba\xcf\x85_\xc9Q\xba\x1c4t)6Qad\xf44\x9b\xe8Y\xf8U\x04\x03\x17~\x95\xa1tHz\xfb\xe3\xe0\xd0\xb4\x10~E|4\xa3\x94%\xd5\x87)<o\xc5\x96\xda\x0e\xa27+\x05\xfe\x08\x9d\xb8\x83\xea\xa3:\n\x9cP\x96\x12\x1f\x07\xc7\xa0\x85\xe0+\xea+\x02z\xa2S>\x91\x0e\xcf\xc0\x1e.\x11|e\n\x0e\xc3\x88\xfb\xc2\xd2\x13\xdd\xe8\x06;\xe9\xb7\xf6\xa8\x8dvq\xec\xd5\xd1\xa1\xddo\xe9\xd1\x8co\xe7\x86^\x1d\x1f\xda\'\xe5Q\x9e\xf9!s\x9c\xbdx\xe7#\n\xb97\xa1\xa08\xd9\xa1\x12?\xdeRy\x9c\x12?:\xa1<\xe4\x12?\xec_9\xef\xc3\x84|q2\xb1F\x16\x1c\xc2\x04\xac\xa2y\xa3|\xc5\x1d\xaa\x91^\xa1\x0f\x1f\x9f\xf0\xb8\xbd\x99\xe5\xa1\xc0\n\x0f#c\xa8fF!\xe7\x9c\xc1$F\x06\xbf\x8dM\x19KUF\x866\xcc\xc9\x91";\x8d\x86\xa0\x8a\x9d2#\x94\xf5dqZ\x8c\xf8d\x1b)#u\xd2E\xa0\xcbK\n\n\x8d\xf4\x08\xd2b,\xda\x9c(p\x9eeo\x18\x84n\xb0\xb7:\xca\xcc\x00\x9a\xa9\xaa\xcc P:\xcb\xa6\xdbY1G\x87v-efk\x8er\x91p%\xb4;\x9e\x14s|h\xd7Qf\xa6\xa6\xab*3[\t\xed7\xcf\x89\x11\x969\x92)\x1bm\x8d\xc4{B\xf4TV`\x8e@[91\xca\xb5\x95P;\xd2L\x1c\x0c\x15\xf5\x9f+\x07&\x9f\x13\x93\x85C\x979\x82\xa2\xca\xc8\xe8\xb6\xe0\\\xbd\xe3\x93fE0p\xf5\xc0\xb29\xf9@6&\xed\xe0\xd0\xb4\x10\x93F\x9d\x94\xb5\xd5\x98\x8eK\x9c\x90;\x12\xeeH\x18\x12E\x8bi`B\xca\'\xa5\xc2\xa1D^\xdcA[-\x81\xe1\xee\xfd\x1f\xb90p\xf9[\x99m!CV\x9d\xe5@\x13\x87\xc66\x0f\rLG\\\xda\xa5\xea,\x1a\x83J\x96\xca\x15\x82\x97\xda9\xcb\xab\xe4\'c\xa7l%?)\xa9\x9a\xb5\xd36\xc2\xf6,\xca\xae2\x89\x05vr\x92\xe0~u\xdd\x91\x08\xdb\xa3\x98\x0b\x02{\x0cz9\x9dX\x80a\xe8Fbs\x89@KU\xd9EG(\xd7>b\xb4.\x9d\x8f\xc3\x8f\xcd\x80\x9f4\xd7\x0f\xf0-\x07\x8b\xae|\x06\x9f\x02\x1f\x96\x80\x8f\xad\xc8R\x04\xdf\xb6l\xcd\xc8\xbf\x87\x07\xdf\x81\xa6\xa2z\xfb\x8c\xd1\xba\xb3>\x0f?7\x03~\xd2\\O\xc07M\rJ\xd5\xd76\xcb\xc0\xb7\x8b\x1a\x12\x83\x8f\xa0\x8a\xe7\xe3g\xadt\xf8h\xb3\x05\x0e\x80L\x81\x03$\x14s\x0e=|\x14\xa0v\x02\xfc\xaa\xd47\x00\xed\xd478\x7f\xf8 `\x1d\x0e\xbfw\x01j\x967\x90\x0b\xd8\xa9\x90C\xcf\x04\xect\xf7`\x95\xea(0\xd4\xcf\x16\x1c\x01\xa4 \xe4\x0e\x0bL\x89\x90\x8b\xc6@\x91\x1e\x13\x0fe-\xd5\x91\x15r\xd8\xa1@\xfe\xb4QF\x90\xf5\xb4CVv\xe1\x0eZj\t\x0c\x93\xf14\x17\x06\xc6TQ\xb6\xb8\x81\xb4\x90\xcb\x81FN\xc8U\x80\x86\x11r\xe5\xdbl\xd1\x18T\xb2TV\xc8\xe95\xceg\x95\xb4SF\xc8\xc9l\xb4\t\xec\xb4\t!\x87\xcdJ&C<\x8akJ\x9fo\xe2X\x9c\x8e#-\xf1k\xf1:]\xc3\xcfY\xdaO\xb39\x8cBslnz;\xb9\xf8r{?+&s5\x04P\xddAKZ\xeb\xce\xa0\xbd\x8d\xfe)\xa5\xc0\x9d\xd7?u\xb1OZ\xeb\t\xf6\xc5\xf2\xe7\x97\x12<\xe2D\r+\x8e/*\x13<\xc2\x8a\xd2qF\x13~kw$\xa5\xc9\x12D\x88\x9cR\x9aN)M\xaf\x1bZ\xbfnJ\x13\x8a\x96\xf0S\xb6\xba/\xe6X.z\xa0(jk?u\x94\x87Z\x1a\x99\x90Vu/>\xbe\xd0\xc2\xe9X`\xab1\x0ce;\xad\xf2\xb1\x85bh\x0c\xb9T\'uh\x8cl\xaaS\xe1\xf1\xdc\xe3\xca\x96\xca\x0c\xd1HJ\xf3\x98\xc2\xf8\x0cI35\x05\xf1\xac\xaafz\x04i_\x90.}gRC,z9\x9d\x1aB\xa4x\'"\x90~\xa9\xe8\xc2\xa6\xf3\xbe\x8e\x0f\xee_*\xbc\xb0\xe9\xc4\xaf#\x84\xfb\x14_\x98Z\xc04\x05\x19\x1c@\xae\xe6\x9d0\xbe\xd0\xb2\xc9\xec\x07\x0c\x04\xdb\x10h\xf4\x81\x95\xb8.\xedL;\x02m,\xa8\xf5\x1cu\x9f\xd5gP2\x8f_\x08\x86,\xb1R\x1e\x18\x96X\x1dmta\x01\n\xac<\xcb\xe6\xf1C\xd9\xe0\xc2\xc3#\xd3F\xc1m\xe2\xa2\xbc<\x13\xed\x9e\x8a\xe4Y\x9cI$\x9e7\xca\x06\x84\xc9\x16\x92\x89`\x13\xfap\x07M\xb5\x04\x06\xf1\x9eT\x04\x03+\xcf\xb2\x99M(c\xaay\xf2L\x08\rp\xe4N\xc6U\x86\x866\xdc\xf6\x9e\x94`\x88\xe4\xe4\xd9(*IY\xcdLG\xe9\xb2\x93R\xb9_Y3m\xa1$9\x9dO\x84g6rE\x8b\xf1$(Q\x91\x9c \x9e\r0\xa2]aW\xd81\x08\xddXa\x97\x0f-\x04\xc7\xaf\xd5jb_\\\x9e\xfc\xf8\xb0\xef\xb9Tk\xc2\xd3s\xab\x93\x1f!\xda\xc5JM\xc5\xd3\x0f\xaa\xdb\xf0+`\x15|\xc7\xef\xbc\xfdo\x90N_\xb9O\xfe\xea%\x9a\xf1\xc5\xbf2\xe4+\x03\xd1\x96\xb0\t=\x05\xb3\xe0?\xdez\xff\x03x$v\xf3\xb9\xb7y\xe5\xaf\xeb`\x8bi\xcc\x9c\xbe\x187\xfb\x81\xde\xf9\xd7\x98\xc3,\xdc\xadK\r\xd1}!\xdc\xe7\xc3z\x19\xbc\xa2\x1b\x93_\x7f3\x0fv\xebm|\xf9\xda\xc5\x1d\xf4\xd6\xee\x1a\xff\x89\x1f\xed*\x08/\x82\xed<xJ\x08H\xd9\xf7\xa7\xdf\xb1M\xfc\xef\xf5\xfb\xf3o\xdf\xc8E\x17\x8f\xd2\xbb\xd0[\xf8\xdbw)\xae%\xfcp\xdf@\xfc\x157|\x17\x06\x9b\xcd\xd4[\xad.\xd7\xee\xd7\x95\xc7\xdd}\x89\x7f?\x14\xdd\xbf\x7f\x80\xbf\xdcg\xffw,W#\xd6KP\xc6ol\x80~\x03(\xa2\x87W~\xb8\xd9\x92\xd7\xfb\xd5\xea\x85\x10\x90\xa8\xf1\x10\xdf\xb5\xf8\xe4}\xc7\rnR\x9d|m\xd6s\xc3\xd5\xcb\xb9\x1f.\xf2\x9e\x0e\x03\xf7\xe3e\x12<\x06\xbb\xed\xeb%\xf7\xe5\xce]q\x00,w\xeb\xc5\x86\xb9\xf6\xf3\xe7\xff\x019\xe0\x9f\x14\x18\x06\x01\x00'

@babehboi
Copy link

Hi @redfern314 ,

Have you looked at https://github.com/jdholtz/auto-southwest-check-in/ to pull the header information?

@tdrummond91
Copy link

CMD line returns 'success' because the code is coded to catch HTTP request errors (403, 500, etc.).

I believe the issue is with CORS, and unless you are on the website and on the debugging console running JS it won't work.
I have read up on a few options and there may be a way to use Node.JS to get past the CORS issue.

@redfern314
Copy link
Owner

Hey folks - appreciate all the input here.

I'm going to archive this repository. Any of you are welcome to fork and revive it, using whatever method you think will work; it's MIT-licensed so go wild. However, the main complaints I had when I originally made this have been resolved:

  • Southwest's main site now natively supports multiple origin/destination airports
  • Southwest flights are now available on major aggregators (Google Flights, Kayak)

Personally, I don't have much use for a tool that runs locally and breaks frequently, when I can just go on Google Flights instead :).

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants