1.項目地址
https://github.com/testerSunshine/12306
這里我只寫了自己的搭建過程,有另外的方式,可以直接看github上的
2.安裝python3.7.4
這玩意兒還是別從官網下了,慢的一批。下面是我在網上找的百度雲地址。
鏈接:https://pan.baidu.com/s/1fMfTpj2vywtXtyYVgzS7Ug
提取碼:hcaa
下載好后,直接安裝即可。
3.搭建雲打碼
項目地址:https://github.com/YinAoXiong/12306_code_server
這個我是直接通過docker拉去的鏡像,直接運行在服務器的,學生優惠。
拉取:docker pull yinaoxiong/12306_code_server
運行:docker run -d -p 8088:80 --name 12306 yinaoxiong/12306_code_server
在瀏覽器輸入 ip:port,能看到hello world,就說明搞定了
4.拉取項目源代碼
通過git clone直接拉去到本地即可。
然后就是修改配置文件:TickerConfig.py,文件中很貼心的給了很多注解。
下面我就簡單的寫一點我遇到的問題。
4.1.HOST
這里就可以用我們的剛剛運行起來的鏡像了,當然如果你沒有,也可以使用他提供的服務。
如果是通過docker構建,則需要改為:captcha:80
4.2.EMAIL_CONF
郵箱配置,主要是用來發送通知郵件,我這里用的是139郵箱,可以做到短信通知。
139郵箱的發件服務器為:stmp.139.com
4.3.SERVER_CHAN_CONF
這個是通過微信公眾號通知,我沒有配置。想配置的可以看github,提供了教程。
4.4.COOKIE_TYPE
這個是獲取12306登錄的憑證的。提供三種方式。
1.使用selenium獲取devicesID
這個的意思是通過ChromeDriver,自動登錄12306獲取憑證。
需要配置CHROME_PATH = " ",路徑就是你下載的ChromeDriver的路徑
ChromeDriver下載地址如下:https://chromedriver.storage.googleapis.com/index.html
選擇與Chrome瀏覽器對應的版本進行下載,下載后解壓即可。
路徑配置需要到具體的文件:CHROME_PATH = "U:\\ChromeDriver\\chromedriver_win32\\chromedriver.exe"
這個我配置的時候,好像控制不了Chrome,遂放棄。不過你們可以試試。
2.使用網頁端/otn/HttpZF/logdevice獲取devicesId
這個接口的算法目前可能有點問題,如果登錄一直302的請改為配置1。
我配置了下,確實是302,遂放棄。
3.自己打開瀏覽器在headers-Cookies中抓取RAIL_DEVICEID和RAIL_EXPIRATION,這個就不用配置selenium
打開瀏覽器,進入12306官網,打開調試模式,火狐是F12,選擇網絡。
在12306官網上,輸入賬號名密碼,進行登錄。
點擊最后一個請求,選擇Cookie,這兩個字段就是我們要找的數據了。
復制下來,填入下面的配置即可。
RAIL_EXPIRATION = " "
RAIL_DEVICEID = " "
5.運行項目
5.1.安裝依賴
在項目的文件夾下,Shift+右鍵,在此處打開打開命令窗口,安裝依賴。
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
5.2.測試
python run.py t
測試成功的話,你就能收到一封測試郵件了。
5.3.篩選CDN
python run.py c
5.4.運行搶票
python run.py r
6.依賴問題
在運行的時候,可能因為依賴的原來跑步起來。一般報錯如下:
ModuleNotFoundError: No module named "XXXX"
這個時候只需要將這些模塊安裝一遍就行了
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple XXXX
極個別的名字不匹配的,直接百度就好了。
最后:祝大家都能搶到票。