家に帰るチケットを購入しましたか?今日はPythonでチケットを取得する方法を説明します

個人のWeChatアカウント:Xiao Zhang Python、注目を集めることを歓迎します!

みなさん、こんにちは〜ゼロです〜

もうすぐお正月ですが、帰宅券を購入しましたか?年末になると、チケットの入手が特に難しくなります。今年は、流行の制御と制御が前の年よりも良くなる可能性がありますが、それでも入手するのは簡単ではありません、、、

比較的遠くに旅行する小さなパートナーの場合、チケットをリリースするのに最適な時間を逃すと、後でチケットを取得する可能性は非常に低くなります。これは、チケットを取得するために競合する人のほとんどが人ではなく、自動化されたプログラムであるためです。 1秒チケットの購入を完了し、その中で注文できるもの(もちろん、チケットを持っていることも前提としています)

本日は、12306チケット取得に関連するオープンソースプロジェクトをご紹介し、プログラムの実行方法をご紹介します。チケットを取得して帰宅できることを願っています。

Githubでキーワード12306を検索すると、関連する多くのオープンソースプロジェクトが見つかります。最高の星は29.3kですが、プロジェクトの更新ログ(最後の更新は13か月前)によると、適時性を確認する必要があります

画像-20210116154318822

このプロジェクトの構成プロセスは非常に単純で、ユーザー名とパスワードを構成するだけで済みます。ローカルで実行しようとしました。検証コードの認識手順は問題ありませんが、ログイン(Cookieの自動収集検証)手順は適切ではありません。

画像-20210116154632274

2日前に初期のギャングスター(公開なし:初期のPythonを立ち上げる)が別のプロジェクトに関する記事を共有したことを確認するために12306票を獲得し、このプロジェクトの上記のバグに基づいてプロジェクトjar of teaの作成者は、彼らの元の構成プロジェクトは、ステップ構成のCookie情報以上のものです。

スターは現在260以上あり、自分でテストしました。チケットの入手に使用すれば問題ありません。効果は以下のとおりです。

Snipaste_2021-01-16_12-00-19

以下に、このプロジェクトの特定の構成手順を紹介します

1、ウェアハウスをローカルにダウンロードします

プロジェクトのGithubアドレス:https://github.com/gzldc/12306

まず、元のプロジェクトをローカルにダウンロードします。ダウンロードするときはgitコマンドを使用しないことをお勧めします。速度が遅くなります。下の[ ZIPダウンロード]ボタンをクリックするだけです。

Snipaste_2021-01-16_13-43-22

ダウンロードしたプロジェクトを解凍します。解凍したディレクトリは次のとおりです(venvフォルダーはありません。venvは仮想環境を指します)

画像-20210116134810028

プロジェクトには依存関係Tensorflowが必要であり、Tensorflowは現在Python 3.6-3.8のみをサポートし、64ビットであるため、ここで何かを言う必要があります。Pythonバージョンがこの要件を満たしていることを確認してください。私はPython 3.7.6、64を使用しています。ビット、テスト済み、すべて問題ありません

2.仮想環境を作成し、依存関係をインストールします

仮想環境を作成、システムの独自のプロジェクトとの競合を防ぐために必要な設定項目の主な目的のをプロジェクトのための仮想環境を作成し、あなたがpipenv、virtualenvのコマンドラインを使用することができ、またPycharmを助けることができProject Interpreterたとき、私のconfigureの設定オプションの助けをPycharmです

virtualenv

依存関係をインストールし、プロジェクトのルートディレクトリでターミナルを開き、仮想環境次のコマンドを入力して、プロジェクトに必要な依存関係を構成します

pip install -r requirements.txt

1

3. Cookieを追加し、プロジェクト構成を変更します

依存関係の設定が完了したら、下のプロジェクトファイルのディレクトリを開きTickerConfig.py、ファイルが50〜55程度の行でプログラムによって必要な設定情報に格納され、3つのパラメータを見つけtkRAIL_EXPIRATIONRATI_DEVICEID、これらの3つのパラメータ情報がクッキーには、手動でする必要があります構成

クッキー

クッキーを見つける方法は?12306最初にブラウザを開き、自分のアカウントでログインします。ショートカットキーF12またはマウスの右ボタンを押して审查オプションを見つけたら以下に示すように、ページ開発者モードの[ネットワーク]-> [XHR ]をクリックします。

画像-20210116144205757

右上のページが空の場合は、ページを更新してください。

initMy ...ページの[XHR]をクリックします。プログラムにはRequest Headers、オプションCookies情報が必要です。

画像-20210116144503667

クッキーは、唯一の3のを必要とし、見つけるtkRAIL_EXPIRATIONRATI_DEVICEID、コンフィギュレーション・ファイルを埋めるために、3単に記入等号の後のセミコロンの前の文字列に注意を払うを

画像-20210116145013283

Cookieを構成したら、次のステップは、日付、乗客、座席などの基本情報を構成し、TickerConfig.pyスクリプトを再入力することです。

画像-20210116145344344

  • TICKET_TYPE、スワイプモード、(デフォルトは1で問題ありません)、
  • SATION_DATES、 出発日
  • OPEN_TIME 、販売前のチケット時間(空にすることをお勧めします);

画像-20210116145728654

  • FROM_STATION、開始点
  • TO_STATION、宛先
  • SET_TYPE、シート
  • IS_MORE_TICKET、単一のシートの場合はTrue、複数のシートの場合はFalseを入力します

画像-20210116150728952

  • TICKET_PEOPLES、アカウントの乗客情報(事前にアカウントで構成する必要があります)
  • USER、デフォルトで問題ありません。入力する必要はありません。
  • PWD、デフォルトは問題ありません、記入する必要はありません
  • tk、RAIL_EXPIRATION、RAIL_DEVICEID、Cookieのコンテンツについては、記事で前述した構成チュートリアルを参照してください。
  • 次の11文字は

設定で変更する必要のあるパラメータは上記のものです。環境設定は基本的にここでOKです。次のステップはプログラムを起動することです。

4.プログラムを開始し、チケットの取得を開始します

ターミナルで、最初に入力します

python run.py c

cdnを追加すると、プログラムでエージェントプールが使用されるため、事前にエージェントプールを起動し、使用できないエージェントを削除します。cdnの効果は次のとおりです(この手順には比較的時間がかかりますので、しばらくお待ちください)。

CDNのスクリーニング

cdnがロードされたら、次のコマンドを入力します

python run.py r

スクリプトを開始してチケットを取得します。最終的な効果は次のとおりです。

22222

チケットを取得した後、ユーザーは30分以内に支払いを完了する必要があります。そうしないと、チケットはシステムによってリサイクルされます。そのため、メールリマインダー、WeChatリマインダーなどの機能がプログラムに追加されました。詳細は紹介しませんでした。ここに興味があれば、自分で調べることができます

5.追記

上記の手順は非常に詳細ですが、環境構成のわずかな違いにより、最初の展開中にまだいくつかのバグがある可能性があります。次の2つは構成で遭遇したものであり、友人はそれを参照できます(遭遇しない方が良い)

1、AttributeError: 'str'オブジェクトに属性がありません 'decode'

エラーメッセージは次のとおりです

model_config = json.loads(model_config.decode('utf-8'))
AttributeError: 'str' object has no attribute 'decode'

上記のエラーは、パッケージh5pyバージョンのインストールが高すぎるために発生します

解決策:pip install h5py==2.10.0リリースを減らすことにより、次のことが可能になります。

2.tkが無効です

画像-20210116153011724

手順3のCookie情報の有効期限が切れているため、解決策は手順3の方法に従ってtkを再構成することであり、後者の2つのパラメーターは基本的に変更されません。

以上が本記事の全内容です。お役に立てば幸いです。最後に、お読みいただきありがとうございます!

免責事項、このチュートリアルは個人的な研究と研究にのみ使用され、商業目的で使用してはなりません。使用しないと、結果に責任があります。

おすすめ

転載: blog.csdn.net/weixin_42512684/article/details/112765991