dev
wenxianping 2018-01-28 14:27:24 +08:00
parent b1ab036026
commit f0fea7cba7
12 changed files with 1049 additions and 357 deletions

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MarkdownExportedFiles">
<htmlFiles />
<imageFiles />
<otherFiles />
</component>
</project>

View File

@ -2,18 +2,18 @@
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="79a86edc-721f-4aad-920d-b595d0348b7f" name="Default" comment="test version"> <list default="true" id="79a86edc-721f-4aad-920d-b595d0348b7f" name="Default" comment="test version">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/config/emailConf.py" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/markdown-exported-files.xml" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/config/urlConf.py" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/agency/cdn_list" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/myException/UserPasswordException.py" /> <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/agency/cdn_utils.py" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/cdn_list" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/tkcode" afterPath="$PROJECT_DIR$/tkcode" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/tkcode" afterPath="$PROJECT_DIR$/tkcode" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/README.md" afterPath="$PROJECT_DIR$/README.md" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/config/ticketConf.py" afterPath="$PROJECT_DIR$/config/ticketConf.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/config/ticket_config.yaml" afterPath="$PROJECT_DIR$/config/ticket_config.yaml" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/config/ticket_config.yaml" afterPath="$PROJECT_DIR$/config/ticket_config.yaml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/config/urlConf.py" afterPath="$PROJECT_DIR$/config/urlConf.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/damatuCode/ruokuai.py" afterPath="$PROJECT_DIR$/damatuCode/ruokuai.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/init/login.py" afterPath="$PROJECT_DIR$/init/login.py" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/init/login.py" afterPath="$PROJECT_DIR$/init/login.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/init/select_ticket_info.py" afterPath="$PROJECT_DIR$/init/select_ticket_info.py" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/init/select_ticket_info.py" afterPath="$PROJECT_DIR$/init/select_ticket_info.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/myUrllib/httpUtils.py" afterPath="$PROJECT_DIR$/myUrllib/httpUtils.py" /> <change type="MODIFICATION" beforePath="$PROJECT_DIR$/myUrllib/httpUtils.py" afterPath="$PROJECT_DIR$/myUrllib/httpUtils.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/myUrllib/myurllib2.py" afterPath="$PROJECT_DIR$/myUrllib/myurllib2.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/run.py" afterPath="$PROJECT_DIR$/run.py" />
</list> </list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" /> <option name="TRACKING_ENABLED" value="true" />
@ -27,6 +27,7 @@
<SUITE FILE_PATH="coverage/12306$12306__2_.coverage" NAME="12306 (2) Coverage Results" MODIFIED="1495725009419" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/login" /> <SUITE FILE_PATH="coverage/12306$12306__2_.coverage" NAME="12306 (2) Coverage Results" MODIFIED="1495725009419" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/login" />
<SUITE FILE_PATH="coverage/12306$run.coverage" NAME="run Coverage Results" MODIFIED="1515392744396" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/yixing" /> <SUITE FILE_PATH="coverage/12306$run.coverage" NAME="run Coverage Results" MODIFIED="1515392744396" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/yixing" />
<SUITE FILE_PATH="coverage/12306$12306__1_.coverage" NAME="12306 (1) Coverage Results" MODIFIED="1495724916012" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/12306login" /> <SUITE FILE_PATH="coverage/12306$12306__1_.coverage" NAME="12306 (1) Coverage Results" MODIFIED="1495724916012" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/12306login" />
<SUITE FILE_PATH="coverage/12306$cdn_utils.coverage" NAME="cdn_utils Coverage Results" MODIFIED="1517114100608" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/agency" />
<SUITE FILE_PATH="coverage/12306$12306test.coverage" NAME="12306test Coverage Results" MODIFIED="1502779393809" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/yixing/myUrllib" /> <SUITE FILE_PATH="coverage/12306$12306test.coverage" NAME="12306test Coverage Results" MODIFIED="1502779393809" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/yixing/myUrllib" />
<SUITE FILE_PATH="coverage/12306$select_ticket_info.coverage" NAME="select_ticket_info Coverage Results" MODIFIED="1515251193898" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/yixing/init" /> <SUITE FILE_PATH="coverage/12306$select_ticket_info.coverage" NAME="select_ticket_info Coverage Results" MODIFIED="1515251193898" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/yixing/init" />
<SUITE FILE_PATH="coverage/12306$test.coverage" NAME="test Coverage Results" MODIFIED="1495722875742" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/12306login" /> <SUITE FILE_PATH="coverage/12306$test.coverage" NAME="test Coverage Results" MODIFIED="1495722875742" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/12306login" />
@ -35,7 +36,7 @@
<SUITE FILE_PATH="coverage/12306$ticketConf.coverage" NAME="ticketConf Coverage Results" MODIFIED="1515140061195" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/yixing/config" /> <SUITE FILE_PATH="coverage/12306$ticketConf.coverage" NAME="ticketConf Coverage Results" MODIFIED="1515140061195" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/yixing/config" />
<SUITE FILE_PATH="coverage/12306$login.coverage" NAME="login Coverage Results" MODIFIED="1501571219088" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/yixing/init" /> <SUITE FILE_PATH="coverage/12306$login.coverage" NAME="login Coverage Results" MODIFIED="1501571219088" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/yixing/init" />
<SUITE FILE_PATH="coverage/12306$tiket.coverage" NAME="tiket Coverage Results" MODIFIED="1495973122962" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/yixing" /> <SUITE FILE_PATH="coverage/12306$tiket.coverage" NAME="tiket Coverage Results" MODIFIED="1495973122962" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/yixing" />
<SUITE FILE_PATH="coverage/12306$run__1_.coverage" NAME="run (1) Coverage Results" MODIFIED="1515677925213" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" /> <SUITE FILE_PATH="coverage/12306$run__1_.coverage" NAME="run (1) Coverage Results" MODIFIED="1517114081921" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
<SUITE FILE_PATH="coverage/12306$haha.coverage" NAME="haha Coverage Results" MODIFIED="1515250987704" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/yixing" /> <SUITE FILE_PATH="coverage/12306$haha.coverage" NAME="haha Coverage Results" MODIFIED="1515250987704" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/yixing" />
<SUITE FILE_PATH="coverage/12306$12306.coverage" NAME="12306 Coverage Results" MODIFIED="1495722251078" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" /> <SUITE FILE_PATH="coverage/12306$12306.coverage" NAME="12306 Coverage Results" MODIFIED="1495722251078" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
</component> </component>
@ -50,8 +51,8 @@
<file leaf-file-name="login.py" pinned="false" current-in-tab="false"> <file leaf-file-name="login.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/init/login.py"> <entry file="file://$PROJECT_DIR$/init/login.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2030"> <state relative-caret-position="178">
<caret line="145" column="28" lean-forward="false" selection-start-line="141" selection-start-column="7" selection-end-line="145" selection-end-column="28" /> <caret line="225" column="0" lean-forward="false" selection-start-line="225" selection-start-column="0" selection-end-line="225" selection-end-column="0" />
<folding> <folding>
<element signature="e#41#54#0" expanded="true" /> <element signature="e#41#54#0" expanded="true" />
</folding> </folding>
@ -59,62 +60,28 @@
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="damatuWeb.py" pinned="false" current-in-tab="false"> <file leaf-file-name="cdn_list" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/damatuCode/damatuWeb.py"> <entry file="file://$PROJECT_DIR$/cdn_list">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="294"> <state relative-caret-position="0">
<caret line="21" column="43" lean-forward="false" selection-start-line="21" selection-start-column="43" selection-end-line="21" selection-end-column="43" /> <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#24#38#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="run.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/run.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="84">
<caret line="6" column="33" lean-forward="false" selection-start-line="6" selection-start-column="33" selection-end-line="6" selection-end-column="33" />
<folding /> <folding />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="ticketConf.py" pinned="false" current-in-tab="false"> <file leaf-file-name="httpUtils.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/config/ticketConf.py"> <entry file="file://$PROJECT_DIR$/myUrllib/httpUtils.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="168"> <state relative-caret-position="150">
<caret line="12" column="7" lean-forward="true" selection-start-line="12" selection-start-column="7" selection-end-line="12" selection-end-column="7" /> <caret line="92" column="0" lean-forward="false" selection-start-line="92" selection-start-column="0" selection-end-line="92" selection-end-column="0" />
<folding> <folding>
<element signature="e#46#55#0" expanded="true" /> <element signature="e#23#38#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="select_ticket_info.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/init/select_ticket_info.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-456">
<caret line="204" column="16" lean-forward="true" selection-start-line="204" selection-start-column="16" selection-end-line="204" selection-end-column="16" />
<folding>
<element signature="e#23#34#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ticket_config.yaml" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/config/ticket_config.yaml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="44">
<caret line="56" column="9" lean-forward="false" selection-start-line="56" selection-start-column="9" selection-end-line="56" selection-end-column="9" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="requirements.txt" pinned="false" current-in-tab="false"> <file leaf-file-name="requirements.txt" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/requirements.txt"> <entry file="file://$PROJECT_DIR$/requirements.txt">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
@ -125,11 +92,67 @@
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="ticketNumOutException.py" pinned="false" current-in-tab="false"> <file leaf-file-name="select_ticket_info.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/myException/ticketNumOutException.py"> <entry file="file://$PROJECT_DIR$/init/select_ticket_info.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="213">
<caret line="0" column="27" lean-forward="false" selection-start-line="0" selection-start-column="27" selection-end-line="0" selection-end-column="27" /> <caret line="356" column="30" lean-forward="true" selection-start-line="356" selection-start-column="30" selection-end-line="356" selection-end-column="30" />
<folding>
<element signature="e#23#34#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="cdn_list" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/agency/cdn_list">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="553">
<caret line="87" column="54" lean-forward="false" selection-start-line="87" selection-start-column="40" selection-end-line="87" selection-end-column="54" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ticket_config.yaml" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/config/ticket_config.yaml">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="602">
<caret line="86" column="9" lean-forward="false" selection-start-line="86" selection-start-column="9" selection-end-line="86" selection-end-column="9" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="cdn_utils.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/agency/cdn_utils.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="544">
<caret line="100" column="0" lean-forward="true" selection-start-line="100" selection-start-column="0" selection-end-line="100" selection-end-column="0" />
<folding>
<element signature="e#16#27#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="urlConf.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/config/urlConf.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-9">
<caret line="91" column="21" lean-forward="true" selection-start-line="91" selection-start-column="21" selection-end-line="91" selection-end-column="21" />
<folding>
<element signature="e#0#13#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="run.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/run.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="140">
<caret line="10" column="0" lean-forward="false" selection-start-line="10" selection-start-column="0" selection-end-line="10" selection-end-column="0" />
<folding /> <folding />
</state> </state>
</provider> </provider>
@ -146,36 +169,36 @@
</component> </component>
<component name="FindInProjectRecents"> <component name="FindInProjectRecents">
<findStrings> <findStrings>
<find>长沙</find>
<find>_json_att</find>
<find>myurllib2</find>
<find>订单提交中,请耐心等待</find>
<find>乘车人</find>
<find>用户</find>
<find>log</find>
<find>车次获取信息为空</find>
<find>正在尝试提交订票</find>
<find>time</find>
<find>getPassengerDTOs</find>
<find>排队成功, 当前余票还剩余</find>
<find>出票成功!</find>
<find>queryOrderWaitTime</find>
<find>正在排队中,请耐心等待.</find>
<find>正在排队中,请耐心等待...</find>
<find>正在执行第1次查询</find>
<find>正在执行</find>
<find>select_refresh_interval</find>
<find>leftTicketLog</find>
<find>车次配置</find>
<find>_station_</find>
<find>尝试提交订单</find>
<find>getQueueCount</find>
<find>尝试提交订单...</find>
<find>恭喜您订票成功</find>
<find>checkRandCodeAnsyn</find>
<find>ticketIsExitsException(submitResult['messages'][0])</find> <find>ticketIsExitsException(submitResult['messages'][0])</find>
<find>ticketIsExitsException</find> <find>ticketIsExitsException</find>
<find>该车次小于上次提交时间</find> <find>该车次小于上次提交时间</find>
<find>学生票</find>
<find>checkRandCodeAnsyn</find>
<find>select_refresh_interval</find>
<find>checkOrderInfoUrl</find>
<find>passenger</find>
<find>checkOrderInfo</find>
<find>resultOrderForDcQueue</find>
<find>expect_refresh_interval</find>
<find>validateMessages</find>
<find>init</find>
<find>submitOrderRequest</find>
<find>initdc_url</find>
<find>confirmSingleForQueue</find>
<find>initDc</find>
<find>secretStr</find>
<find>time</find>
<find>state</find>
<find>autoSubmitOrderRequest</find>
<find>checkQueueOrderUrl</find>
<find>map</find>
<find>cdn_list</find>
<find>req_url</find>
<find>func</find>
<find>is_logger</find>
<find>is_logg</find>
<find>超时</find>
<find>118.180.15.113</find>
</findStrings> </findStrings>
</component> </component>
<component name="Git.Settings"> <component name="Git.Settings">
@ -212,7 +235,6 @@
<option value="$PROJECT_DIR$/yixing/myUrllib/myurllib2.py" /> <option value="$PROJECT_DIR$/yixing/myUrllib/myurllib2.py" />
<option value="$PROJECT_DIR$/yixing/myException/ticketIsExitsException.py" /> <option value="$PROJECT_DIR$/yixing/myException/ticketIsExitsException.py" />
<option value="$PROJECT_DIR$/yixing/requirements.txt" /> <option value="$PROJECT_DIR$/yixing/requirements.txt" />
<option value="$PROJECT_DIR$/README.md" />
<option value="$PROJECT_DIR$/yixing/run.py" /> <option value="$PROJECT_DIR$/yixing/run.py" />
<option value="$PROJECT_DIR$/yixing/config/ticket_config.yaml" /> <option value="$PROJECT_DIR$/yixing/config/ticket_config.yaml" />
<option value="$PROJECT_DIR$/yixing/init/select_ticket_info.py" /> <option value="$PROJECT_DIR$/yixing/init/select_ticket_info.py" />
@ -220,10 +242,20 @@
<option value="$PROJECT_DIR$/yixing/init/login.py" /> <option value="$PROJECT_DIR$/yixing/init/login.py" />
<option value="$PROJECT_DIR$/config/ticketConf.py" /> <option value="$PROJECT_DIR$/config/ticketConf.py" />
<option value="$PROJECT_DIR$/myException/ticketNumOutException.py" /> <option value="$PROJECT_DIR$/myException/ticketNumOutException.py" />
<option value="$PROJECT_DIR$/.gitignore" />
<option value="$PROJECT_DIR$/init/login.py" />
<option value="$PROJECT_DIR$/damatuCode/damatuWeb.py" /> <option value="$PROJECT_DIR$/damatuCode/damatuWeb.py" />
<option value="$PROJECT_DIR$/config/logger.py" />
<option value="$PROJECT_DIR$/config/configCommon.py" />
<option value="$PROJECT_DIR$/tmp/log/2018-01-24.log" />
<option value="$PROJECT_DIR$/.gitignore" />
<option value="$PROJECT_DIR$/README.md" />
<option value="$PROJECT_DIR$/damatuCode/ruokuai.py" />
<option value="$PROJECT_DIR$/tmp/log/2018-01-25.log" />
<option value="$PROJECT_DIR$/config/urlConf.py" />
<option value="$PROJECT_DIR$/agency/cdn_list" />
<option value="$PROJECT_DIR$/init/login.py" />
<option value="$PROJECT_DIR$/myUrllib/httpUtils.py" />
<option value="$PROJECT_DIR$/init/select_ticket_info.py" /> <option value="$PROJECT_DIR$/init/select_ticket_info.py" />
<option value="$PROJECT_DIR$/agency/cdn_utils.py" />
<option value="$PROJECT_DIR$/config/ticket_config.yaml" /> <option value="$PROJECT_DIR$/config/ticket_config.yaml" />
</list> </list>
</option> </option>
@ -258,8 +290,6 @@
<foldersAlwaysOnTop value="true" /> <foldersAlwaysOnTop value="true" />
</navigator> </navigator>
<panes> <panes>
<pane id="Scope" />
<pane id="Scratches" />
<pane id="ProjectPane"> <pane id="ProjectPane">
<subPane> <subPane>
<expand> <expand>
@ -267,30 +297,22 @@
<item name="12306" type="b2602c69:ProjectViewProjectNode" /> <item name="12306" type="b2602c69:ProjectViewProjectNode" />
<item name="12306" type="462c0819:PsiDirectoryNode" /> <item name="12306" type="462c0819:PsiDirectoryNode" />
</path> </path>
<path>
<item name="12306" type="b2602c69:ProjectViewProjectNode" />
<item name="12306" type="462c0819:PsiDirectoryNode" />
<item name="agency" type="462c0819:PsiDirectoryNode" />
</path>
<path> <path>
<item name="12306" type="b2602c69:ProjectViewProjectNode" /> <item name="12306" type="b2602c69:ProjectViewProjectNode" />
<item name="12306" type="462c0819:PsiDirectoryNode" /> <item name="12306" type="462c0819:PsiDirectoryNode" />
<item name="config" type="462c0819:PsiDirectoryNode" /> <item name="config" type="462c0819:PsiDirectoryNode" />
</path> </path>
<path>
<item name="12306" type="b2602c69:ProjectViewProjectNode" />
<item name="12306" type="462c0819:PsiDirectoryNode" />
<item name="damatuCode" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="12306" type="b2602c69:ProjectViewProjectNode" />
<item name="12306" type="462c0819:PsiDirectoryNode" />
<item name="init" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="12306" type="b2602c69:ProjectViewProjectNode" />
<item name="12306" type="462c0819:PsiDirectoryNode" />
<item name="myUrllib" type="462c0819:PsiDirectoryNode" />
</path>
</expand> </expand>
<select /> <select />
</subPane> </subPane>
</pane> </pane>
<pane id="Scratches" />
<pane id="Scope" />
</panes> </panes>
</component> </component>
<component name="PropertiesComponent"> <component name="PropertiesComponent">
@ -304,14 +326,15 @@
</component> </component>
<component name="RecentsManager"> <component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS"> <key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$" />
<recent name="$PROJECT_DIR$/yixing/config" /> <recent name="$PROJECT_DIR$/yixing/config" />
</key> </key>
<key name="CopyFile.RECENT_KEYS"> <key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/myException" />
<recent name="$PROJECT_DIR$" /> <recent name="$PROJECT_DIR$" />
<recent name="$PROJECT_DIR$/tmp/log" />
<recent name="$PROJECT_DIR$/config" />
<recent name="$PROJECT_DIR$/myException" />
<recent name="$PROJECT_DIR$/yixing/myUrllib" /> <recent name="$PROJECT_DIR$/yixing/myUrllib" />
<recent name="D:\my_work\12306" />
<recent name="D:\my_work\12306\12306login" />
</key> </key>
</component> </component>
<component name="RunDashboard"> <component name="RunDashboard">
@ -326,7 +349,7 @@
</list> </list>
</option> </option>
</component> </component>
<component name="RunManager" selected="Python.run (1)"> <component name="RunManager" selected="Python.cdn_utils">
<configuration name="12306 (3)" type="PythonConfigurationType" factoryName="Python"> <configuration name="12306 (3)" type="PythonConfigurationType" factoryName="Python">
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
@ -558,20 +581,20 @@
<option name="USE_KEYWORD" value="false" /> <option name="USE_KEYWORD" value="false" />
<method /> <method />
</configuration> </configuration>
<configuration name="haha" type="PythonConfigurationType" factoryName="Python" temporary="true"> <configuration name="cdn_utils" type="PythonConfigurationType" factoryName="Python" temporary="true">
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
<envs> <envs>
<env name="PYTHONUNBUFFERED" value="1" /> <env name="PYTHONUNBUFFERED" value="1" />
</envs> </envs>
<option name="SDK_HOME" value="" /> <option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/yixing" /> <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/agency" />
<option name="IS_MODULE_SDK" value="true" /> <option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" /> <option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" /> <option name="ADD_SOURCE_ROOTS" value="true" />
<module name="12306" /> <module name="12306" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" /> <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/yixing/haha.py" /> <option name="SCRIPT_NAME" value="$PROJECT_DIR$/agency/cdn_utils.py" />
<option name="PARAMETERS" value="" /> <option name="PARAMETERS" value="" />
<option name="SHOW_COMMAND_LINE" value="false" /> <option name="SHOW_COMMAND_LINE" value="false" />
<option name="EMULATE_TERMINAL" value="false" /> <option name="EMULATE_TERMINAL" value="false" />
@ -652,17 +675,17 @@
<item index="0" class="java.lang.String" itemvalue="Python.12306 (3)" /> <item index="0" class="java.lang.String" itemvalue="Python.12306 (3)" />
<item index="1" class="java.lang.String" itemvalue="Python.run" /> <item index="1" class="java.lang.String" itemvalue="Python.run" />
<item index="2" class="java.lang.String" itemvalue="Python.select_ticket_info" /> <item index="2" class="java.lang.String" itemvalue="Python.select_ticket_info" />
<item index="3" class="java.lang.String" itemvalue="Python.haha" /> <item index="3" class="java.lang.String" itemvalue="Python.run (1)" />
<item index="4" class="java.lang.String" itemvalue="Python.run (1)" /> <item index="4" class="java.lang.String" itemvalue="Python.select_ticket_info (1)" />
<item index="5" class="java.lang.String" itemvalue="Python.select_ticket_info (1)" /> <item index="5" class="java.lang.String" itemvalue="Python.cdn_utils" />
</list> </list>
<recent_temporary> <recent_temporary>
<list size="5"> <list size="5">
<item index="0" class="java.lang.String" itemvalue="Python.run (1)" /> <item index="0" class="java.lang.String" itemvalue="Python.cdn_utils" />
<item index="1" class="java.lang.String" itemvalue="Python.select_ticket_info (1)" /> <item index="1" class="java.lang.String" itemvalue="Python.run (1)" />
<item index="2" class="java.lang.String" itemvalue="Python.run" /> <item index="2" class="java.lang.String" itemvalue="Python.run" />
<item index="3" class="java.lang.String" itemvalue="Python.select_ticket_info" /> <item index="3" class="java.lang.String" itemvalue="Python.select_ticket_info (1)" />
<item index="4" class="java.lang.String" itemvalue="Python.haha" /> <item index="4" class="java.lang.String" itemvalue="Python.select_ticket_info" />
</list> </list>
</recent_temporary> </recent_temporary>
</component> </component>
@ -845,23 +868,93 @@
<option name="project" value="LOCAL" /> <option name="project" value="LOCAL" />
<updated>1515678353449</updated> <updated>1515678353449</updated>
</task> </task>
<option name="localTasksCounter" value="25" /> <task id="LOCAL-00025" summary="修改请求超时问题&#10;修改检查登录心跳方式">
<created>1516714146751</created>
<option name="number" value="00025" />
<option name="presentableId" value="LOCAL-00025" />
<option name="project" value="LOCAL" />
<updated>1516714146751</updated>
</task>
<task id="LOCAL-00026" summary="1、增加若快打码&#10;2、优化提示语&#10;3、修改若干bug">
<created>1516759585724</created>
<option name="number" value="00026" />
<option name="presentableId" value="LOCAL-00026" />
<option name="project" value="LOCAL" />
<updated>1516759585724</updated>
</task>
<task id="LOCAL-00027" summary="增加日志">
<created>1516769778850</created>
<option name="number" value="00027" />
<option name="presentableId" value="LOCAL-00027" />
<option name="project" value="LOCAL" />
<updated>1516769778850</updated>
</task>
<task id="LOCAL-00028" summary="fix">
<created>1516769863674</created>
<option name="number" value="00028" />
<option name="presentableId" value="LOCAL-00028" />
<option name="project" value="LOCAL" />
<updated>1516769863674</updated>
</task>
<task id="LOCAL-00029" summary="fix">
<created>1516804524397</created>
<option name="number" value="00029" />
<option name="presentableId" value="LOCAL-00029" />
<option name="project" value="LOCAL" />
<updated>1516804524397</updated>
</task>
<task id="LOCAL-00030" summary="test version">
<created>1516860947755</created>
<option name="number" value="00030" />
<option name="presentableId" value="LOCAL-00030" />
<option name="project" value="LOCAL" />
<updated>1516860947755</updated>
</task>
<task id="LOCAL-00031" summary="删除 expect_refresh_interval 无用字段,优化代码">
<created>1516866756742</created>
<option name="number" value="00031" />
<option name="presentableId" value="LOCAL-00031" />
<option name="project" value="LOCAL" />
<updated>1516866756742</updated>
</task>
<task id="LOCAL-00032" summary="更新">
<created>1516869457581</created>
<option name="number" value="00032" />
<option name="presentableId" value="LOCAL-00032" />
<option name="project" value="LOCAL" />
<updated>1516869457581</updated>
</task>
<task id="LOCAL-00033" summary="加速需要验证码订票的速度">
<created>1516887378591</created>
<option name="number" value="00033" />
<option name="presentableId" value="LOCAL-00033" />
<option name="project" value="LOCAL" />
<updated>1516887378591</updated>
</task>
<task id="LOCAL-00034" summary="修正下载验证码失败问题">
<created>1516887559529</created>
<option name="number" value="00034" />
<option name="presentableId" value="LOCAL-00034" />
<option name="project" value="LOCAL" />
<updated>1516887559529</updated>
</task>
<option name="localTasksCounter" value="35" />
<servers /> <servers />
</component> </component>
<component name="ToolWindowManager"> <component name="ToolWindowManager">
<frame x="0" y="0" width="1440" height="900" extended-state="0" /> <frame x="0" y="0" width="1440" height="900" extended-state="0" />
<editor active="true" /> <editor active="true" />
<layout> <layout>
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.17453505" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" /> <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.18025751" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" /> <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.5465538" sideWeight="0.50429183" order="14" side_tool="true" content_ui="tabs" /> <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.5465538" sideWeight="0.50429183" order="14" side_tool="true" content_ui="tabs" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.54413545" sideWeight="0.49570817" order="4" side_tool="false" content_ui="tabs" /> <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.17412333" sideWeight="0.49570817" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32889965" sideWeight="0.5" order="15" side_tool="false" content_ui="tabs" /> <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32889965" sideWeight="0.5" order="15" side_tool="false" content_ui="tabs" />
<window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.48004836" sideWeight="0.5" order="16" side_tool="false" content_ui="tabs" /> <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.48004836" sideWeight="0.5" order="16" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.24964234" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.24964234" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32889965" sideWeight="0.5" order="17" side_tool="false" content_ui="tabs" /> <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32889965" sideWeight="0.5" order="17" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.7315599" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" /> <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39661428" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3297568" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" /> <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3297568" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3297568" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3297568" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" /> <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
@ -880,20 +973,20 @@
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" /> <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.5465538" sideWeight="0.50429183" order="7" side_tool="true" content_ui="tabs" /> <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.5465538" sideWeight="0.50429183" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" /> <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.3446191" sideWeight="0.49570817" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32889965" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" /> <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32889965" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.48004836" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" /> <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.48004836" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.4413543" sideWeight="0.49570817" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Coverage" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" /> <window_info id="Coverage" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32889965" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" /> <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32889965" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.16165951" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" /> <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.17811158" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" /> <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" /> <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32889965" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32889965" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.24964234" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3297568" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.7315599" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" /> <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.7315599" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" /> <window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3297568" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
</layout-to-restore> </layout-to-restore>
</component> </component>
<component name="TypeScriptGeneratedFilesManager"> <component name="TypeScriptGeneratedFilesManager">
@ -929,8 +1022,6 @@
<option name="myLimit" value="2678400000" /> <option name="myLimit" value="2678400000" />
</component> </component>
<component name="VcsManagerConfiguration"> <component name="VcsManagerConfiguration">
<MESSAGE value="常规更新" />
<MESSAGE value="修改查询接口配置有误" />
<MESSAGE value="增加过滤车次配置" /> <MESSAGE value="增加过滤车次配置" />
<MESSAGE value="增加配置" /> <MESSAGE value="增加配置" />
<MESSAGE value="增加预售车次订票休眠时间配置" /> <MESSAGE value="增加预售车次订票休眠时间配置" />
@ -946,79 +1037,25 @@
<MESSAGE value="提交验证码拉去类别问题" /> <MESSAGE value="提交验证码拉去类别问题" />
<MESSAGE value="增加提交订单验证码校验" /> <MESSAGE value="增加提交订单验证码校验" />
<MESSAGE value="跳出下单循环" /> <MESSAGE value="跳出下单循环" />
<MESSAGE value="fix" />
<MESSAGE value="限制队列线程买票大小" /> <MESSAGE value="限制队列线程买票大小" />
<option name="LAST_COMMIT_MESSAGE" value="限制队列线程买票大小" /> <MESSAGE value="修改请求超时问题&#10;修改检查登录心跳方式" />
<MESSAGE value="1、增加若快打码&#10;2、优化提示语&#10;3、修改若干bug" />
<MESSAGE value="增加日志" />
<MESSAGE value="fix" />
<MESSAGE value="test version" />
<MESSAGE value="删除 expect_refresh_interval 无用字段,优化代码" />
<MESSAGE value="更新" />
<MESSAGE value="加速需要验证码订票的速度" />
<MESSAGE value="修正下载验证码失败问题" />
<option name="LAST_COMMIT_MESSAGE" value="修正下载验证码失败问题" />
</component> </component>
<component name="XDebuggerManager"> <component name="XDebuggerManager">
<breakpoint-manager> <breakpoint-manager>
<option name="time" value="21" /> <option name="time" value="34" />
</breakpoint-manager> </breakpoint-manager>
<watches-manager /> <watches-manager />
</component> </component>
<component name="editorHistoryManager"> <component name="editorHistoryManager">
<entry file="file://$USER_HOME$/.PyCharm2016.3/system/python_stubs/-762174762/PyQt5/QtWidgets/QColorDialog.py" />
<entry file="file://$USER_HOME$/.PyCharm2016.3/system/python_stubs/-762174762/PyQt5/Qt.py" />
<entry file="file://$USER_HOME$/.PyCharm2016.3/system/python_stubs/-762174762/PyQt5/QtWidgets/QGridLayout.py" />
<entry file="file://$PROJECT_DIR$/yixing/ChildrenForm.py" />
<entry file="file://$USER_HOME$/.PyCharm2016.3/system/python_stubs/-762174762/PyQt5/QtWidgets/QDateTimeEdit.py" />
<entry file="file://$USER_HOME$/.PyCharm2016.3/system/python_stubs/-762174762/PyQt5/QtWidgets/QWidget.py" />
<entry file="file://$USER_HOME$/.PyCharm2016.3/system/python_stubs/-762174762/PySide/QtGui/QTextTable.py" />
<entry file="file://$USER_HOME$/.PyCharm2016.3/system/python_stubs/-762174762/PyQt5/QtWidgets/QTableView.py" />
<entry file="file://$USER_HOME$/.PyCharm2016.3/system/python_stubs/-762174762/PyQt5/QtWidgets/QTableWidget.py" />
<entry file="file://$USER_HOME$/.PyCharm2016.3/system/python_stubs/-762174762/PyQt5/QtWidgets/QAbstractItemView.py" />
<entry file="file://$PROJECT_DIR$/yixing/agency/agency_tools.py" />
<entry file="file://$PROJECT_DIR$/yixing/tiket.py" />
<entry file="file:///System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_LWPCookieJar.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="172">
<caret line="19" column="4" lean-forward="false" selection-start-line="19" selection-start-column="4" selection-end-line="19" selection-end-column="4" />
</state>
</provider>
</entry>
<entry file="file:///System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/cookielib.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1900">
<caret line="1808" column="44" lean-forward="false" selection-start-line="1808" selection-start-column="44" selection-end-line="1808" selection-end-column="44" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/yixing/myUrllib/station_name.txt" />
<entry file="file://$USER_HOME$/Library/Caches/PyCharm2017.2/python_stubs/-2125986627/datetime.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="172">
<caret line="492" column="65" lean-forward="true" selection-start-line="492" selection-start-column="43" selection-end-line="492" selection-end-column="65" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/yixing/config.yaml" />
<entry file="file://$PROJECT_DIR$/yixing/myUrllib/12306test.py" />
<entry file="file:///Library/Python/2.7/site-packages/jenkins/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="267">
<caret line="256" column="8" lean-forward="false" selection-start-line="256" selection-start-column="8" selection-end-line="256" selection-end-column="8" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/yixing/test.py" />
<entry file="file:///System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="350" column="0" lean-forward="false" selection-start-line="350" selection-start-column="0" selection-end-line="350" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file:///System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="445">
<caret line="383" column="0" lean-forward="false" selection-start-line="383" selection-start-column="0" selection-end-line="383" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/yixing/myException/balanceException.py" />
<entry file="file://$PROJECT_DIR$/yixing/haha.py" />
<entry file="file://$PROJECT_DIR$/yixing/12306.py" />
<entry file="file://$PROJECT_DIR$/yixing/damatuCode/damatuWeb.py" /> <entry file="file://$PROJECT_DIR$/yixing/damatuCode/damatuWeb.py" />
<entry file="file://$PROJECT_DIR$/yixing/station_name.txt" /> <entry file="file://$PROJECT_DIR$/yixing/station_name.txt" />
<entry file="file:///System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py"> <entry file="file:///System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py">
@ -1052,29 +1089,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="126">
<caret line="9" column="38" lean-forward="false" selection-start-line="9" selection-start-column="38" selection-end-line="9" selection-end-column="38" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/run.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="84">
<caret line="6" column="33" lean-forward="false" selection-start-line="6" selection-start-column="33" selection-end-line="6" selection-end-column="33" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="28">
<caret line="2" column="6" lean-forward="false" selection-start-line="2" selection-start-column="6" selection-end-line="2" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/myException/ticketNumOutException.py"> <entry file="file://$PROJECT_DIR$/myException/ticketNumOutException.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0"> <state relative-caret-position="0">
@ -1091,36 +1105,219 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/myUrllib/myurllib2.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-262">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file:///Library/Python/2.7/site-packages/requests/adapters.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="198">
<caret line="520" column="0" lean-forward="false" selection-start-line="520" selection-start-column="0" selection-end-line="520" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file:///Library/Python/2.7/site-packages/requests/sessions.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="117">
<caret line="617" column="0" lean-forward="false" selection-start-line="617" selection-start-column="0" selection-end-line="617" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file:///Library/Python/2.7/site-packages/requests/exceptions.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1444">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/damatuCode/damatuWeb.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="173">
<caret line="112" column="22" lean-forward="false" selection-start-line="112" selection-start-column="22" selection-end-line="112" selection-end-column="22" />
<folding>
<element signature="e#24#38#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config/configCommon.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-382">
<caret line="18" column="0" lean-forward="true" selection-start-line="18" selection-start-column="0" selection-end-line="18" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config/logger.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="84">
<caret line="6" column="25" lean-forward="false" selection-start-line="6" selection-start-column="25" selection-end-line="6" selection-end-column="25" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tmp/log/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="42">
<caret line="3" column="0" lean-forward="false" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tmp/log/2018-01-24.log" />
<entry file="file://$USER_HOME$/Library/Containers/com.tencent.qq/Data/Library/Caches/Images/93095B6094A9A4632A2EA50C88EDE235.png">
<provider selected="true" editor-type-id="images">
<state />
</provider>
</entry>
<entry file="file:///System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="145">
<caret line="655" column="8" lean-forward="false" selection-start-line="655" selection-start-column="8" selection-end-line="655" selection-end-column="8" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/tmp/log/2018-01-25.log" />
<entry file="file://$PROJECT_DIR$/damatuCode/ruokuai.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="462">
<caret line="34" column="40" lean-forward="false" selection-start-line="34" selection-start-column="40" selection-end-line="34" selection-end-column="40" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config/ticketConf.py"> <entry file="file://$PROJECT_DIR$/config/ticketConf.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="168"> <state relative-caret-position="98">
<caret line="12" column="7" lean-forward="true" selection-start-line="12" selection-start-column="7" selection-end-line="12" selection-end-column="7" /> <caret line="9" column="10" lean-forward="false" selection-start-line="9" selection-start-column="10" selection-end-line="9" selection-end-column="10" />
<folding> <folding>
<element signature="e#46#55#0" expanded="true" /> <element signature="e#45#54#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file:///Library/Python/2.7/site-packages/requests/api.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="145">
<caret line="100" column="4" lean-forward="false" selection-start-line="100" selection-start-column="4" selection-end-line="100" selection-end-column="4" />
<folding />
</state>
</provider>
</entry>
<entry file="file:///System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/re.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-131">
<caret line="229" column="4" lean-forward="false" selection-start-line="229" selection-start-column="4" selection-end-line="229" selection-end-column="4" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/agency/agency_tools.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="49" column="16" lean-forward="false" selection-start-line="49" selection-start-column="16" selection-end-line="49" selection-end-column="17" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="split-provider[text-editor;MarkdownPreviewEditor]">
<state split_layout="SPLIT">
<first_editor relative-caret-position="14">
<caret line="6" column="26" lean-forward="false" selection-start-line="6" selection-start-column="26" selection-end-line="6" selection-end-column="26" />
<folding />
</first_editor>
<second_editor>
<js_state />
</second_editor>
</state>
</provider>
<provider editor-type-id="text-editor">
<state relative-caret-position="126">
<caret line="9" column="38" lean-forward="false" selection-start-line="9" selection-start-column="38" selection-end-line="9" selection-end-column="38" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/agency/cdn_list">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/station_name.txt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file:///Library/Python/2.7/site-packages/urllib3/connection.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="220">
<caret line="343" column="0" lean-forward="false" selection-start-line="343" selection-start-column="0" selection-end-line="343" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Library/Caches/PyCharm2017.2/python_stubs/-2125986627/__builtin__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="154">
<caret line="1858" column="8" lean-forward="false" selection-start-line="1858" selection-start-column="8" selection-end-line="1858" selection-end-column="8" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/init/login.py"> <entry file="file://$PROJECT_DIR$/init/login.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2030"> <state relative-caret-position="178">
<caret line="145" column="28" lean-forward="false" selection-start-line="141" selection-start-column="7" selection-end-line="145" selection-end-column="28" /> <caret line="225" column="0" lean-forward="false" selection-start-line="225" selection-start-column="0" selection-end-line="225" selection-end-column="0" />
<folding> <folding>
<element signature="e#41#54#0" expanded="true" /> <element signature="e#41#54#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/damatuCode/damatuWeb.py"> <entry file="file://$PROJECT_DIR$/tmp/log/2018-01-28.log">
<provider selected="true" editor-type-id="LogFileEditorProvider">
<state relative-caret-position="-10022">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config/urlConf.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="294"> <state relative-caret-position="-9">
<caret line="21" column="43" lean-forward="false" selection-start-line="21" selection-start-column="43" selection-end-line="21" selection-end-column="43" /> <caret line="91" column="21" lean-forward="true" selection-start-line="91" selection-start-column="21" selection-end-line="91" selection-end-column="21" />
<folding> <folding>
<element signature="e#24#38#0" expanded="true" /> <element signature="e#0#13#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/run.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="140">
<caret line="10" column="0" lean-forward="false" selection-start-line="10" selection-start-column="0" selection-end-line="10" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/requirements.txt"> <entry file="file://$PROJECT_DIR$/requirements.txt">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="70"> <state relative-caret-position="70">
@ -1129,20 +1326,56 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/myUrllib/httpUtils.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="92" column="0" lean-forward="false" selection-start-line="92" selection-start-column="0" selection-end-line="92" selection-end-column="0" />
<folding>
<element signature="e#23#38#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/cdn_list">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/agency/cdn_utils.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="544">
<caret line="100" column="0" lean-forward="true" selection-start-line="100" selection-start-column="0" selection-end-line="100" selection-end-column="0" />
<folding>
<element signature="e#16#27#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/init/select_ticket_info.py"> <entry file="file://$PROJECT_DIR$/init/select_ticket_info.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-456"> <state relative-caret-position="213">
<caret line="204" column="16" lean-forward="true" selection-start-line="204" selection-start-column="16" selection-end-line="204" selection-end-column="16" /> <caret line="356" column="30" lean-forward="true" selection-start-line="356" selection-start-column="30" selection-end-line="356" selection-end-column="30" />
<folding> <folding>
<element signature="e#23#34#0" expanded="true" /> <element signature="e#23#34#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/agency/cdn_list">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="553">
<caret line="87" column="54" lean-forward="false" selection-start-line="87" selection-start-column="40" selection-end-line="87" selection-end-column="54" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config/ticket_config.yaml"> <entry file="file://$PROJECT_DIR$/config/ticket_config.yaml">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="44"> <state relative-caret-position="602">
<caret line="56" column="9" lean-forward="false" selection-start-line="56" selection-start-column="9" selection-end-line="56" selection-end-column="9" /> <caret line="86" column="9" lean-forward="false" selection-start-line="86" selection-start-column="9" selection-end-line="86" selection-end-column="9" />
<folding /> <folding />
</state> </state>
</provider> </provider>

89
agency/cdn_list Normal file
View File

@ -0,0 +1,89 @@
{"state": "1", "msg": "''", "result": "'125.90.204.122'", "ipaddress": "'\u5e7f\u4e1c\u7701\u8087\u5e86\u5e02 \u7535\u4fe1'", "responsetime": "'10\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'58.221.78.105'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'43\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'110.157.235.63'", "ipaddress": "'\u65b0\u7586\u4e4c\u9c81\u6728\u9f50\u5e02 \u7535\u4fe1'", "responsetime": "'8\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'58.51.168.196'", "ipaddress": "'\u6e56\u5317\u7701\u5b5d\u611f\u5e02 \u7535\u4fe1'", "responsetime": "'3\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.77.130.216'", "ipaddress": "'\u798f\u5efa\u7701\u53a6\u95e8\u5e02 \u7535\u4fe1'", "responsetime": "'5\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'36.99.32.182'", "ipaddress": "'\u6cb3\u5357\u7701\u7126\u4f5c\u5e02 \u7535\u4fe1'", "responsetime": "'5\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'116.53.51.84'", "ipaddress": "'\u4e91\u5357\u7701\u7ea2\u6cb3\u5dde \u7535\u4fe1'", "responsetime": "'12\u6beb\u79d2'", "ttl": "'58'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'61.147.210.175'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7535\u4fe1'", "responsetime": "'8\u6beb\u79d2'", "ttl": "'57'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'115.231.22.80'", "ipaddress": "'\u6d59\u6c5f\u7701\u6e56\u5dde\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'1\u6beb\u79d2'", "ttl": "'60'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'14.119.124.101'", "ipaddress": "'\u5e7f\u4e1c\u7701\u5e7f\u5dde\u5e02 \u7535\u4fe1'", "responsetime": "'8\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'36.42.32.66'", "ipaddress": "'\u9655\u897f\u7701\u5b9d\u9e21\u5e02 \u7f51\u5bbf\u79d1\u6280\u80a1\u4efd\u6709\u9650\u516c\u53f8\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'4\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'183.66.109.3'", "ipaddress": "'\u91cd\u5e86\u5e02 \u7535\u4fe1'", "responsetime": "'3\u6beb\u79d2'", "ttl": "'58'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'14.119.124.101'", "ipaddress": "'\u5e7f\u4e1c\u7701\u5e7f\u5dde\u5e02 \u7535\u4fe1'", "responsetime": "'5\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'58.221.78.105'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'35\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.90.204.122'", "ipaddress": "'\u5e7f\u4e1c\u7701\u8087\u5e86\u5e02 \u7535\u4fe1'", "responsetime": "'14\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'220.172.242.224'", "ipaddress": "'\u8d35\u5dde\u7701\u9ed4\u897f\u5357\u5dde\u5174\u4e49\u5e02 \u7535\u4fe1'", "responsetime": "'<1\u6beb\u79d2'", "ttl": "'59'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'219.147.92.64'", "ipaddress": "'\u9ed1\u9f99\u6c5f\u7701\u5927\u5e86\u5e02 \u6cb9\u7530\u5bbd\u5e26'", "responsetime": "'25\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.90.204.122'", "ipaddress": "'\u5e7f\u4e1c\u7701\u8087\u5e86\u5e02 \u7535\u4fe1'", "responsetime": "'10\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.112.135'", "ipaddress": "'\u5e7f\u4e1c\u7701\u6e5b\u6c5f\u5e02 \u7535\u4fe1'", "responsetime": "'16\u6beb\u79d2'", "ttl": "'53'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'61.147.210.175'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7535\u4fe1'", "responsetime": "'8\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'150.138.169.233'", "ipaddress": "'\u5c71\u4e1c\u7701\u9752\u5c9b\u5e02 \u7f51\u5bbf\u79d1\u6280\u80a1\u4efd\u6709\u9650\u516c\u53f8\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'7\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'58.221.78.105'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'15\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'14\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'36.42.32.66'", "ipaddress": "'\u9655\u897f\u7701\u5b9d\u9e21\u5e02 \u7f51\u5bbf\u79d1\u6280\u80a1\u4efd\u6709\u9650\u516c\u53f8\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'8\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'36.42.32.66'", "ipaddress": "'\u9655\u897f\u7701\u5b9d\u9e21\u5e02 \u7f51\u5bbf\u79d1\u6280\u80a1\u4efd\u6709\u9650\u516c\u53f8\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'5\u6beb\u79d2'", "ttl": "'57'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.89.198.81'", "ipaddress": "'\u5e7f\u4e1c\u7701\u97f6\u5173\u5e02 \u7535\u4fe1'", "responsetime": "'11\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'59.44.30.114'", "ipaddress": "'\u8fbd\u5b81\u7701\u6c88\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'37\u6beb\u79d2'", "ttl": "'53'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'60.174.241.125'", "ipaddress": "'\u5b89\u5fbd\u7701\u5408\u80a5\u5e02\u5de2\u6e56\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'2\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.90.206.144'", "ipaddress": "'\u5e7f\u4e1c\u7701\u8087\u5e86\u5e02 \u7535\u4fe1'", "responsetime": "'10\u6beb\u79d2'", "ttl": "'53'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.77.134.79'", "ipaddress": "'\u798f\u5efa\u7701\u53a6\u95e8\u5e02 \u7535\u4fe1'", "responsetime": "'4\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'61.147.210.175'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7535\u4fe1'", "responsetime": "'8\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'171.90.249.191'", "ipaddress": "'\u56db\u5ddd\u7701\u81ea\u8d21\u5e02 \u7535\u4fe1'", "responsetime": "'8\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'115.231.22.80'", "ipaddress": "'\u6d59\u6c5f\u7701\u6e56\u5dde\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'8\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.90.206.144'", "ipaddress": "'\u5e7f\u4e1c\u7701\u8087\u5e86\u5e02 \u7535\u4fe1'", "responsetime": "'10\u6beb\u79d2'", "ttl": "'53'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'180.97.244.192'", "ipaddress": "'\u6c5f\u82cf\u7701\u82cf\u5dde\u5e02 \u7535\u4fe1'", "responsetime": "'9\u6beb\u79d2'", "ttl": "'53'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'59.49.42.253'", "ipaddress": "'\u5c71\u897f\u7701\u592a\u539f\u5e02\u5c0f\u5e97\u533a \u7535\u4fe1'", "responsetime": "'<1\u6beb\u79d2'", "ttl": "'62'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.77.130.207'", "ipaddress": "'\u798f\u5efa\u7701\u53a6\u95e8\u5e02 \u7535\u4fe1'", "responsetime": "'5\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'218.77.92.243'", "ipaddress": "'\u6e56\u5357\u7701\u76ca\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'4\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'58.221.78.105'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'66\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.90.204.122'", "ipaddress": "'\u5e7f\u4e1c\u7701\u8087\u5e86\u5e02 \u7535\u4fe1'", "responsetime": "'10\u6beb\u79d2'", "ttl": "'50'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'180.97.244.192'", "ipaddress": "'\u6c5f\u82cf\u7701\u82cf\u5dde\u5e02 \u7535\u4fe1'", "responsetime": "'11\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'117.27.243.113'", "ipaddress": "'\u798f\u5efa\u7701\u798f\u5dde\u5e02 \u7f51\u5bbf\u79d1\u6280\u80a1\u4efd\u6709\u9650\u516c\u53f8\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'4\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.16.212.192'", "ipaddress": "'\u5e7f\u897f\u8d3a\u5dde\u5e02 \u7535\u4fe1'", "responsetime": "'26\u6beb\u79d2'", "ttl": "'49'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.112.135'", "ipaddress": "'\u5e7f\u4e1c\u7701\u6e5b\u6c5f\u5e02 \u7535\u4fe1'", "responsetime": "'13\u6beb\u79d2'", "ttl": "'51'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'219.147.233.232'", "ipaddress": "'\u9ed1\u9f99\u6c5f\u7701\u53cc\u9e2d\u5c71\u5e02 \u7535\u4fe1'", "responsetime": "'21\u6beb\u79d2'", "ttl": "'59'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'58.221.78.105'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'9\u6beb\u79d2'", "ttl": "'53'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'218.12.228.70'", "ipaddress": "'\u6cb3\u5317\u7701\u90a2\u53f0\u5e02 \u8054\u901a'", "responsetime": "'20\u6beb\u79d2'", "ttl": "'48'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'60.174.243.166'", "ipaddress": "'\u5b89\u5fbd\u7701\u5408\u80a5\u5e02\u5de2\u6e56\u5e02 \u7535\u4fe1'", "responsetime": "'7\u6beb\u79d2'", "ttl": "'49'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'219.147.93.222'", "ipaddress": "'\u9ed1\u9f99\u6c5f\u7701\u5927\u5e86\u5e02 \u6cb9\u7530\u5bbd\u5e26'", "responsetime": "'40\u6beb\u79d2'", "ttl": "'53'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'218.58.206.56'", "ipaddress": "'\u5c71\u4e1c\u7701\u5fb7\u5dde\u5e02 \u8054\u901a'", "responsetime": "'27\u6beb\u79d2'", "ttl": "'53'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'124.165.216.254'", "ipaddress": "'\u5c71\u897f\u7701\u5415\u6881\u5e02 \u8054\u901a'", "responsetime": "'17\u6beb\u79d2'", "ttl": "'58'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'115.231.22.80'", "ipaddress": "'\u6d59\u6c5f\u7701\u6e56\u5dde\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'7\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'112.240.60.226'", "ipaddress": "'\u5c71\u4e1c\u7701\u6dc4\u535a\u5e02\u535a\u5c71\u533a \u8054\u901a'", "responsetime": "'25\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'58.221.78.105'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'13\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'60.210.23.112'", "ipaddress": "'\u5c71\u4e1c\u7701\u6dc4\u535a\u5e02 \u5e1d\u8054\u4fe1\u606f\u79d1\u6280\u8054\u901aCDN\u8282\u70b9'", "responsetime": "'17\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'112.90.213.65'", "ipaddress": "'\u5e7f\u4e1c\u7701\u5e7f\u5dde\u5e02 \u4e2d\u56fd\u8054\u901a\u9aa8\u5e72\u8282\u70b9'", "responsetime": "'21\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'117.27.243.113'", "ipaddress": "'\u798f\u5efa\u7701\u798f\u5dde\u5e02 \u7f51\u5bbf\u79d1\u6280\u80a1\u4efd\u6709\u9650\u516c\u53f8\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'<1\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'60.210.23.112'", "ipaddress": "'\u5c71\u4e1c\u7701\u6dc4\u535a\u5e02 \u5e1d\u8054\u4fe1\u606f\u79d1\u6280\u8054\u901aCDN\u8282\u70b9'", "responsetime": "'10\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'221.206.120.101'", "ipaddress": "'\u9ed1\u9f99\u6c5f\u7701\u7261\u4e39\u6c5f\u5e02 \u8054\u901a'", "responsetime": "'6\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'221.202.204.253'", "ipaddress": "'\u8fbd\u5b81\u7701\u8425\u53e3\u5e02 \u8054\u901a'", "responsetime": "'7\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'123.138.60.232'", "ipaddress": "'\u9655\u897f\u7701\u897f\u5b89\u5e02 \u7f51\u5bbf\u79d1\u6280\u8054\u901aCDN\u8282\u70b9'", "responsetime": "'2\u6beb\u79d2'", "ttl": "'57'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'124.167.232.125'", "ipaddress": "'\u5c71\u897f\u7701 \u7f51\u5bbf\u79d1\u6280\u8054\u901aCDN\u8282\u70b9'", "responsetime": "'95\u6beb\u79d2'", "ttl": "'57'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'183.131.192.83'", "ipaddress": "'\u6d59\u6c5f\u7701\u6e29\u5dde\u5e02 \u7535\u4fe1'", "responsetime": "'6\u6beb\u79d2'", "ttl": "'51'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.207.77.191'", "ipaddress": "'\u91cd\u5e86\u5e02 \u8054\u901a'", "responsetime": "'<1\u6beb\u79d2'", "ttl": "'60'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'112.240.60.226'", "ipaddress": "'\u5c71\u4e1c\u7701\u6dc4\u535a\u5e02\u535a\u5c71\u533a \u8054\u901a'", "responsetime": "'37\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'60.210.23.112'", "ipaddress": "'\u5c71\u4e1c\u7701\u6dc4\u535a\u5e02 \u5e1d\u8054\u4fe1\u606f\u79d1\u6280\u8054\u901aCDN\u8282\u70b9'", "responsetime": "'3\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'122.136.46.107'", "ipaddress": "'\u5409\u6797\u7701\u5ef6\u8fb9\u5dde \u7f51\u5bbf\u79d1\u6280\u8054\u901aCDN\u8282\u70b9'", "responsetime": "'<1\u6beb\u79d2'", "ttl": "'58'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'123.128.14.202'", "ipaddress": "'\u5c71\u4e1c\u7701\u6cf0\u5b89\u5e02 \u8054\u901a'", "responsetime": "'5\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'120.221.24.8'", "ipaddress": "'\u4e2d\u56fd \u79fb\u52a8'", "responsetime": "'6\u6beb\u79d2'", "ttl": "'57'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'111.13.135.248'", "ipaddress": "'\u5317\u4eac\u5e02 \u79fb\u52a8'", "responsetime": "'25\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'183.236.10.216'", "ipaddress": "'\u5e7f\u4e1c\u7701\u5e7f\u5dde\u5e02 \u79fb\u52a8'", "responsetime": "'7\u6beb\u79d2'", "ttl": "'251'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'13\u6beb\u79d2'", "ttl": "'51'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'49.79.232.225'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7535\u4fe1'", "responsetime": "'69\u6beb\u79d2'", "ttl": "'50'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'58.221.78.39'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'72\u6beb\u79d2'", "ttl": "'49'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'23\u6beb\u79d2'", "ttl": "'50'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'58.218.208.199'", "ipaddress": "'\u6c5f\u82cf\u7701\u5f90\u5dde\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'37\u6beb\u79d2'", "ttl": "'45'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'14\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'22\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'219.147.93.222'", "ipaddress": "'\u9ed1\u9f99\u6c5f\u7701\u5927\u5e86\u5e02 \u6cb9\u7530\u5bbd\u5e26'", "responsetime": "'62\u6beb\u79d2'", "ttl": "'48'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'73\u6beb\u79d2'", "ttl": "'50'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'219.147.93.222'", "ipaddress": "'\u9ed1\u9f99\u6c5f\u7701\u5927\u5e86\u5e02 \u6cb9\u7530\u5bbd\u5e26'", "responsetime": "'72\u6beb\u79d2'", "ttl": "'51'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'15\u6beb\u79d2'", "ttl": "'57'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'15\u6beb\u79d2'", "ttl": "'53'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'58.218.208.199'", "ipaddress": "'\u6c5f\u82cf\u7701\u5f90\u5dde\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'34\u6beb\u79d2'", "ttl": "'50'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'16\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'13\u6beb\u79d2'", "ttl": "'51'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'17\u6beb\u79d2'", "ttl": "'53'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'118.180.15.113'", "ipaddress": "'\u7518\u8083\u7701\u5170\u5dde\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'65\u6beb\u79d2'", "ttl": "'50'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'20\u6beb\u79d2'", "ttl": "'50'", "bytes": "'32'"}

100
agency/cdn_utils.py Normal file
View File

@ -0,0 +1,100 @@
# encoding=utf8
import json
import re
import collections
import requests
from config import urlConf
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
class CDNProxy:
def __init__(self, host=None):
self.host = host
self.urlConf = urlConf.urls
self.httpClint = requests
self.city_list = []
self.timeout = 5
def _set_header(self):
"""设置header"""
return {
"Content-Type": "application/x-www-form-urlencoded; charset=utf-8",
"X-Requested-With": "xmlHttpRequest",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
"Referer": "https://kyfw.12306.cn/otn/login/init",
"Accept": "*/*",
}
def get_city_id(self):
"""
获取所有城市md5参数
:return:
"""
try:
if self.host:
while True:
url = self.urlConf["cdn_host"]["req_url"]
data = {"host": self.host, "lintType": "电信,多线,联通,移动"}
rep = self.httpClint.post(url, data, headers=self._set_header(), timeout=self.timeout)
city_re = re.compile(r"<li id=\"(\S+)\" class=\"PingListCent PingRLlist")
self.city_list = re.findall(city_re, rep.content)
if self.city_list:
print self.city_list
break
else:
pass
except:
pass
def open_cdn_file(self):
f = open("./cdn_list", "a+")
return f
def get_cdn_list(self):
"""
筛选代理
:return:
"""
f = self.open_cdn_file()
url = self.urlConf["cdn_list"]["req_url"]
num = 1
f.seek(0)
f.truncate()
for guid in self.city_list:
data = {"guid": guid,
"host": "kyfw.12306.cn",
"ishost": 0,
"encode": "HJXhdRqjh5yCF6G/AZ6EDk9faB1oSk5r",
"checktype": 0}
try:
cdn_info = self.httpClint.post(url, data, headers=self._set_header(), timeout=self.timeout).content
print(cdn_info)
if cdn_info:
split_cdn = cdn_info.split("(")[1].rstrip(")").replace("{", "").replace("}", "").split(",")
local_dict = collections.OrderedDict()
for i in split_cdn:
splits = i.split(":")
local_dict[splits[0]] = splits[2] if splits[0] == "result" else splits[1]
if local_dict and "state" in local_dict and local_dict["state"] == "1":
if "responsetime" in local_dict and local_dict["responsetime"].find("毫秒") != -1 and int(filter(str.isdigit, local_dict["responsetime"])) < 100:
f.write(json.dumps(local_dict)+"\n")
num += 1
except Exception as e:
print(e.message)
print("本次cdn获取完成总个数{0}".format(num))
def all_cdn(self):
"""获取cdn列表"""
with open('./cdn_list', 'r') as f:
cdn = f.readlines()
return cdn
if __name__ == '__main__':
cdn = CDNProxy("kyfw.12306.cn")
cdn.get_city_id()
cdn.get_cdn_list()
# print cdn.all_cdn()

99
cdn_list Normal file
View File

@ -0,0 +1,99 @@
{"state": "1", "msg": "''", "result": "'122.226.47.123'", "ipaddress": "'\u6d59\u6c5f\u7701\u91d1\u534e\u5e02 \u7535\u4fe1'", "responsetime": "'6\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'36.42.32.66'", "ipaddress": "'\u9655\u897f\u7701\u5b9d\u9e21\u5e02 \u7f51\u5bbf\u79d1\u6280\u80a1\u4efd\u6709\u9650\u516c\u53f8\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'8\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'61.147.210.175'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7535\u4fe1'", "responsetime": "'8\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'121.18.230.86'", "ipaddress": "'\u6cb3\u5317\u7701\u4fdd\u5b9a\u5e02 \u7f51\u5bbf\u79d1\u6280\u8054\u901aCDN\u8282\u70b9'", "responsetime": "'33\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'183.66.109.245'", "ipaddress": "'\u91cd\u5e86\u5e02 \u7535\u4fe1'", "responsetime": "'8\u6beb\u79d2'", "ttl": "'58'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.77.134.79'", "ipaddress": "'\u798f\u5efa\u7701\u53a6\u95e8\u5e02 \u7535\u4fe1'", "responsetime": "'5\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'14.119.124.101'", "ipaddress": "'\u5e7f\u4e1c\u7701\u5e7f\u5dde\u5e02 \u7535\u4fe1'", "responsetime": "'12\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'61.147.210.175'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7535\u4fe1'", "responsetime": "'8\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'180.97.244.192'", "ipaddress": "'\u6c5f\u82cf\u7701\u82cf\u5dde\u5e02 \u7535\u4fe1'", "responsetime": "'16\u6beb\u79d2'", "ttl": "'57'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'222.246.212.91'", "ipaddress": "'\u6e56\u5357\u7701\u90f4\u5dde\u5e02 \u7535\u4fe1'", "responsetime": "'12\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'14\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'180.97.244.192'", "ipaddress": "'\u6c5f\u82cf\u7701\u82cf\u5dde\u5e02 \u7535\u4fe1'", "responsetime": "'39\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'110.157.235.63'", "ipaddress": "'\u65b0\u7586\u4e4c\u9c81\u6728\u9f50\u5e02 \u7535\u4fe1'", "responsetime": "'8\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.64.102.187'", "ipaddress": "'\u56db\u5ddd\u7701\u5fb7\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'4\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'42.123.107.43'", "ipaddress": "'\u5185\u8499\u53e4\u547c\u548c\u6d69\u7279\u5e02 \u4e2d\u56fd\u7535\u4fe1\u4e91\u8ba1\u7b97\u4e2d\u5fc3'", "responsetime": "'7\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'180.97.244.192'", "ipaddress": "'\u6c5f\u82cf\u7701\u82cf\u5dde\u5e02 \u7535\u4fe1'", "responsetime": "'10\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'180.97.244.192'", "ipaddress": "'\u6c5f\u82cf\u7701\u82cf\u5dde\u5e02 \u7535\u4fe1'", "responsetime": "'28\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'14.119.124.101'", "ipaddress": "'\u5e7f\u4e1c\u7701\u5e7f\u5dde\u5e02 \u7535\u4fe1'", "responsetime": "'8\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.58.182'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'11\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'116.53.51.84'", "ipaddress": "'\u4e91\u5357\u7701\u7ea2\u6cb3\u5dde \u7535\u4fe1'", "responsetime": "'12\u6beb\u79d2'", "ttl": "'58'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'219.138.21.110'", "ipaddress": "'\u6e56\u5317\u7701\u5b9c\u660c\u5e02 \u7535\u4fe1'", "responsetime": "'6\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.77.134.79'", "ipaddress": "'\u798f\u5efa\u7701\u53a6\u95e8\u5e02 \u7535\u4fe1'", "responsetime": "'4\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.90.204.122'", "ipaddress": "'\u5e7f\u4e1c\u7701\u8087\u5e86\u5e02 \u7535\u4fe1'", "responsetime": "'10\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.90.206.144'", "ipaddress": "'\u5e7f\u4e1c\u7701\u8087\u5e86\u5e02 \u7535\u4fe1'", "responsetime": "'8\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'36.99.32.179'", "ipaddress": "'\u6cb3\u5357\u7701\u7126\u4f5c\u5e02 \u7535\u4fe1'", "responsetime": "'5\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.90.204.122'", "ipaddress": "'\u5e7f\u4e1c\u7701\u8087\u5e86\u5e02 \u7535\u4fe1'", "responsetime": "'11\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'58.221.78.105'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'9\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.90.204.122'", "ipaddress": "'\u5e7f\u4e1c\u7701\u8087\u5e86\u5e02 \u7535\u4fe1'", "responsetime": "'13\u6beb\u79d2'", "ttl": "'51'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'59.45.172.34'", "ipaddress": "'\u8fbd\u5b81\u7701\u961c\u65b0\u5e02\u592a\u5e73\u533a \u7ea2\u5229\u7f51\u5427'", "responsetime": "'14\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.89.198.81'", "ipaddress": "'\u5e7f\u4e1c\u7701\u97f6\u5173\u5e02 \u7535\u4fe1'", "responsetime": "'12\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'36.42.32.66'", "ipaddress": "'\u9655\u897f\u7701\u5b9d\u9e21\u5e02 \u7f51\u5bbf\u79d1\u6280\u80a1\u4efd\u6709\u9650\u516c\u53f8\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'4\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.89.198.81'", "ipaddress": "'\u5e7f\u4e1c\u7701\u97f6\u5173\u5e02 \u7535\u4fe1'", "responsetime": "'10\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'115.231.20.49'", "ipaddress": "'\u6d59\u6c5f\u7701\u6e56\u5dde\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'7\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'58.221.78.105'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'12\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'117.27.243.113'", "ipaddress": "'\u798f\u5efa\u7701\u798f\u5dde\u5e02 \u7f51\u5bbf\u79d1\u6280\u80a1\u4efd\u6709\u9650\u516c\u53f8\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'5\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'180.97.244.192'", "ipaddress": "'\u6c5f\u82cf\u7701\u82cf\u5dde\u5e02 \u7535\u4fe1'", "responsetime": "'37\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.90.206.144'", "ipaddress": "'\u5e7f\u4e1c\u7701\u8087\u5e86\u5e02 \u7535\u4fe1'", "responsetime": "'9\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'60.174.241.88'", "ipaddress": "'\u5b89\u5fbd\u7701\u5408\u80a5\u5e02\u5de2\u6e56\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'100\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'219.147.233.232'", "ipaddress": "'\u9ed1\u9f99\u6c5f\u7701\u53cc\u9e2d\u5c71\u5e02 \u7535\u4fe1'", "responsetime": "'21\u6beb\u79d2'", "ttl": "'59'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.89.198.81'", "ipaddress": "'\u5e7f\u4e1c\u7701\u97f6\u5173\u5e02 \u7535\u4fe1'", "responsetime": "'12\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'218.29.49.71'", "ipaddress": "'\u6cb3\u5357\u7701\u65b0\u4e61\u5e02 \u7f51\u5bbf\u79d1\u6280\u8054\u901aCDN\u8282\u70b9'", "responsetime": "'9\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'110.88.145.90'", "ipaddress": "'\u798f\u5efa\u7701\u6cc9\u5dde\u5e02 \u7535\u4fe1'", "responsetime": "'29\u6beb\u79d2'", "ttl": "'49'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'59.63.234.87'", "ipaddress": "'\u6c5f\u897f\u7701\u5357\u660c\u5e02 \u7535\u4fe1'", "responsetime": "'1\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.77.130.216'", "ipaddress": "'\u798f\u5efa\u7701\u53a6\u95e8\u5e02 \u7535\u4fe1'", "responsetime": "'4\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.16.212.192'", "ipaddress": "'\u5e7f\u897f\u8d3a\u5dde\u5e02 \u7535\u4fe1'", "responsetime": "'25\u6beb\u79d2'", "ttl": "'49'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'61.147.210.175'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7535\u4fe1'", "responsetime": "'8\u6beb\u79d2'", "ttl": "'53'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'101.227.175.218'", "ipaddress": "'\u4e0a\u6d77\u5e02 \u7535\u4fe1'", "responsetime": "'2\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'175.188.163.55'", "ipaddress": "'\u5317\u4eac\u5e02 \u9e4f\u535a\u58eb\u957f\u57ce\u5bbd\u5e26'", "responsetime": "'7\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'112.240.60.226'", "ipaddress": "'\u5c71\u4e1c\u7701\u6dc4\u535a\u5e02\u535a\u5c71\u533a \u8054\u901a'", "responsetime": "'6\u6beb\u79d2'", "ttl": "'57'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'124.165.216.254'", "ipaddress": "'\u5c71\u897f\u7701\u5415\u6881\u5e02 \u8054\u901a'", "responsetime": "'6\u6beb\u79d2'", "ttl": "'58'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'125.77.130.207'", "ipaddress": "'\u798f\u5efa\u7701\u53a6\u95e8\u5e02 \u7535\u4fe1'", "responsetime": "'3\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'124.167.232.125'", "ipaddress": "'\u5c71\u897f\u7701 \u7f51\u5bbf\u79d1\u6280\u8054\u901aCDN\u8282\u70b9'", "responsetime": "'32\u6beb\u79d2'", "ttl": "'57'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'123.128.14.202'", "ipaddress": "'\u5c71\u4e1c\u7701\u6cf0\u5b89\u5e02 \u8054\u901a'", "responsetime": "'17\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'112.240.60.226'", "ipaddress": "'\u5c71\u4e1c\u7701\u6dc4\u535a\u5e02\u535a\u5c71\u533a \u8054\u901a'", "responsetime": "'37\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.207.77.191'", "ipaddress": "'\u91cd\u5e86\u5e02 \u8054\u901a'", "responsetime": "'1\u6beb\u79d2'", "ttl": "'60'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'123.138.60.232'", "ipaddress": "'\u9655\u897f\u7701\u897f\u5b89\u5e02 \u7f51\u5bbf\u79d1\u6280\u8054\u901aCDN\u8282\u70b9'", "responsetime": "'2\u6beb\u79d2'", "ttl": "'57'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'119.52.120.81'", "ipaddress": "'\u5409\u6797\u7701\u901a\u5316\u5e02 \u8054\u901a'", "responsetime": "'14\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'112.240.60.226'", "ipaddress": "'\u5c71\u4e1c\u7701\u6dc4\u535a\u5e02\u535a\u5c71\u533a \u8054\u901a'", "responsetime": "'3\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'123.128.14.202'", "ipaddress": "'\u5c71\u4e1c\u7701\u6cf0\u5b89\u5e02 \u8054\u901a'", "responsetime": "'28\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'221.206.120.101'", "ipaddress": "'\u9ed1\u9f99\u6c5f\u7701\u7261\u4e39\u6c5f\u5e02 \u8054\u901a'", "responsetime": "'7\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'218.58.206.56'", "ipaddress": "'\u5c71\u4e1c\u7701\u5fb7\u5dde\u5e02 \u8054\u901a'", "responsetime": "'27\u6beb\u79d2'", "ttl": "'53'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'58.221.78.105'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'13\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'221.202.204.253'", "ipaddress": "'\u8fbd\u5b81\u7701\u8425\u53e3\u5e02 \u8054\u901a'", "responsetime": "'7\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'112.90.135.238'", "ipaddress": "'\u5e7f\u4e1c\u7701\u5e7f\u5dde\u5e02 \u4e2d\u56fd\u8054\u901a\u9aa8\u5e72\u8282\u70b9'", "responsetime": "'15\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'183.131.210.66'", "ipaddress": "'\u6d59\u6c5f\u7701\u91d1\u534e\u5e02 \u7535\u4fe1'", "responsetime": "'6\u6beb\u79d2'", "ttl": "'55'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'120.221.24.8'", "ipaddress": "'\u4e2d\u56fd \u79fb\u52a8'", "responsetime": "'6\u6beb\u79d2'", "ttl": "'57'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'111.62.244.177'", "ipaddress": "'\u6cb3\u5317\u7701 \u79fb\u52a8'", "responsetime": "'29\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'183.236.10.216'", "ipaddress": "'\u5e7f\u4e1c\u7701\u5e7f\u5dde\u5e02 \u79fb\u52a8'", "responsetime": "'7\u6beb\u79d2'", "ttl": "'251'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'58.218.208.199'", "ipaddress": "'\u6c5f\u82cf\u7701\u5f90\u5dde\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'35\u6beb\u79d2'", "ttl": "'50'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'17\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'58.221.78.39'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'72\u6beb\u79d2'", "ttl": "'49'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.58.182'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'163\u6beb\u79d2'", "ttl": "'54'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'20\u6beb\u79d2'", "ttl": "'50'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'14\u6beb\u79d2'", "ttl": "'48'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'58.221.78.105'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'151\u6beb\u79d2'", "ttl": "'50'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'219.147.93.222'", "ipaddress": "'\u9ed1\u9f99\u6c5f\u7701\u5927\u5e86\u5e02 \u6cb9\u7530\u5bbd\u5e26'", "responsetime": "'61\u6beb\u79d2'", "ttl": "'56'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'101.227.102.18'", "ipaddress": "'\u4e0a\u6d77\u5e02 \u7535\u4fe1'", "responsetime": "'129\u6beb\u79d2'", "ttl": "'47'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'49.79.232.225'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7535\u4fe1'", "responsetime": "'34\u6beb\u79d2'", "ttl": "'50'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.58.182'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'163\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'14\u6beb\u79d2'", "ttl": "'51'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.58.182'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'158\u6beb\u79d2'", "ttl": "'53'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'18\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'118.180.15.113'", "ipaddress": "'\u7518\u8083\u7701\u5170\u5dde\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'66\u6beb\u79d2'", "ttl": "'50'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'15\u6beb\u79d2'", "ttl": "'53'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'15\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'16\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.58.182'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'161\u6beb\u79d2'", "ttl": "'51'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.58.182'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'154\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'58.218.208.199'", "ipaddress": "'\u6c5f\u82cf\u7701\u5f90\u5dde\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'37\u6beb\u79d2'", "ttl": "'46'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'73\u6beb\u79d2'", "ttl": "'50'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.58.182'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'166\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'16\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'118.180.15.113'", "ipaddress": "'\u7518\u8083\u7701\u5170\u5dde\u5e02 \u7f51\u5bbf\u79d1\u6280\u7535\u4fe1CDN\u8282\u70b9'", "responsetime": "'198\u6beb\u79d2'", "ttl": "'50'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'20\u6beb\u79d2'", "ttl": "'50'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.58.182'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'163\u6beb\u79d2'", "ttl": "'53'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.58.182'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'157\u6beb\u79d2'", "ttl": "'53'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'61.147.210.175'", "ipaddress": "'\u6c5f\u82cf\u7701\u5357\u901a\u5e02 \u7535\u4fe1'", "responsetime": "'41\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.44.166'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'13\u6beb\u79d2'", "ttl": "'51'", "bytes": "'32'"}
{"state": "1", "msg": "''", "result": "'113.107.58.182'", "ipaddress": "'\u5e7f\u4e1c\u7701\u63ed\u9633\u5e02 \u7535\u4fe1'", "responsetime": "'163\u6beb\u79d2'", "ttl": "'52'", "bytes": "'32'"}

View File

@ -44,7 +44,7 @@ set:
# - "2018-01-27" # - "2018-01-27"
# - "2018-01-28" # - "2018-01-28"
# - "2018-02-22" # - "2018-02-22"
- "2018-02-23" - "2018-02-24"
station_trains: station_trains:
- "D2879" - "D2879"
- "D1813" - "D1813"
@ -74,27 +74,29 @@ set:
12306count: 12306count:
# - uesr: "" # - uesr: ""
# - pwd: "apple1995" # - pwd: "apple1995"
- uesr: "931128603@qq.com" - uesr: "@qq.com"
- pwd: "QWERTY" - pwd: "QWERTY"
select_refresh_interval: 0.3 select_refresh_interval: 0.4
ticket_black_list_time: 6 ticket_black_list_time: 6
is_aotu_code: True is_aotu_code: True
aotu_code_type: 2 aotu_code_type: 2
#enable_proxy: False #enable_proxy: False
damatu: damatu:
uesr: "931128603" uesr: ""
pwd: "qazWSX1995" pwd: "qazWSX1995"
email_conf: email_conf:
is_email: True is_email: True
email: "931128603@qq.com " email: "@qq.com "
notice_email_list: "61995120@qq.com" notice_email_list: "61995120@qq.com"
username: "931128603" username: ""
password: "xwopwxbkupbqbfgb" password: "xwopwxbkupbqbfgb"
host: "smtp.qq.com" host: "smtp.qq.com"
is_cdn: 1

View File

@ -1,94 +1,235 @@
import random import random
import time
urls = { urls = {
"auth": { "auth": {
"req_url": "https://kyfw.12306.cn/passport/web/auth/uamtk", "req_url": "/passport/web/auth/uamtk",
"req_type": "post" "req_type": "post",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": True,
"is_json": True,
}, },
"login": { "login": {
"req_url": "https://kyfw.12306.cn/passport/web/login", "req_url": "/passport/web/login",
"req_type": "post" "req_type": "post",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": True,
"is_json": True,
}, },
"getCodeImg": { "getCodeImg": {
"req_url": "https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand&{0}".format(random.random()), "req_url": "/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand&{0}".format(random.random()),
"req_type": "get" "req_type": "get",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": False,
"is_json": False,
}, },
"codeCheck": { "codeCheck": {
"req_url": "https://kyfw.12306.cn/passport/captcha/captcha-check", "req_url": "/passport/captcha/captcha-check",
"req_type": "post" "req_type": "post",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": True,
"is_json": True,
}, },
"loginInit": { "loginInit": {
"req_url": "https://kyfw.12306.cn/otn/login/init", "req_url": "/otn/login/init",
"req_type": "get" "req_type": "get",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": False,
"is_json": False,
}, },
"getUserInfo": { "getUserInfo": {
"req_url": "https://kyfw.12306.cn/otn/index/initMy12306", "req_url": "/otn/index/initMy12306",
"req_type": "get" "req_type": "get",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": False,
"is_json": False,
}, },
"userLogin": { "userLogin": {
"req_url": "https://kyfw.12306.cn/otn/login/userLogin", "req_url": "/otn/login/userLogin",
"req_type": "get" "req_type": "get",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": True,
"is_json": True,
}, },
"uamauthclient": { "uamauthclient": {
"req_url": "https://kyfw.12306.cn/otn/uamauthclient", "req_url": "/otn/uamauthclient",
"req_type": "post" "req_type": "post",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": True,
"is_json": True,
}, },
"initdc_url": { "initdc_url": {
"req_url": "https://kyfw.12306.cn/otn/confirmPassenger/initDc", "req_url": "/otn/confirmPassenger/initDc",
"req_type": "get" "req_type": "get",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": False,
"is_json": False,
}, },
"get_passengerDTOs": { "get_passengerDTOs": {
"req_url": "https://kyfw.12306.cn/otn/confirmPassenger/getPassengerDTOs", "req_url": "/otn/confirmPassenger/getPassengerDTOs",
"req_type": "post" "req_type": "post",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": True,
"is_json": True,
}, },
"select_url": { "select_url": {
"req_url": "https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_date={0}&leftTicketDTO.from_station={1}&leftTicketDTO.to_station={2}&purpose_codes=ADULT", "req_url": "/otn/leftTicket/queryZ?leftTicketDTO.train_date={0}&leftTicketDTO.from_station={1}&leftTicketDTO.to_station={2}&purpose_codes=ADULT",
"req_type": "post" "req_type": "post",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": False,
"is_json": True,
}, },
"check_user_url": { "check_user_url": {
"req_url": "https://kyfw.12306.cn/otn/login/checkUser", "req_url": "/otn/login/checkUser",
"req_type": "post" "req_type": "post",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": True,
"is_json": True,
}, },
"submit_station_url": { "submit_station_url": {
"req_url": "https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest", "req_url": "/otn/leftTicket/submitOrderRequest",
"req_type": "post" "req_type": "post",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": True,
"is_json": True,
}, },
"checkOrderInfoUrl": { "checkOrderInfoUrl": {
"req_url": "https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo", "req_url": "/otn/confirmPassenger/checkOrderInfo",
"req_type": "post" "req_type": "post",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": True,
"is_json": True,
}, },
"getQueueCountUrl": { "getQueueCountUrl": {
"req_url": "https://kyfw.12306.cn/otn/confirmPassenger/getQueueCount", "req_url": "/otn/confirmPassenger/getQueueCount",
"req_type": "post" "req_type": "post",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": True,
"is_json": True,
}, },
"checkQueueOrderUrl": { "checkQueueOrderUrl": {
"req_url": "https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue", "req_url": "/otn/confirmPassenger/confirmSingleForQueue",
"req_type": "post" "req_type": "post",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": True,
"is_json": True,
}, },
"checkRandCodeAnsyn": { "checkRandCodeAnsyn": {
"req_url": "https://kyfw.12306.cn/otn/passcodeNew/checkRandCodeAnsyn", "req_url": "/otn/passcodeNew/checkRandCodeAnsyn",
"req_type": "post" "req_type": "post",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": True,
"is_json": True,
}, },
"codeImgByOrder": { "codeImgByOrder": {
"req_url": "https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew?module=passenger&rand=randp&%s" % random.random(), "req_url": "/otn/passcodeNew/getPassCodeNew?module=passenger&rand=randp&%s" % random.random(),
"req_type": "post" "req_type": "post",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": False,
"is_json": False,
}, },
"queryOrderWaitTimeUrl": { "queryOrderWaitTimeUrl": {
"req_url": "https://kyfw.12306.cn/otn/confirmPassenger/queryOrderWaitTime", "req_url": "/otn/confirmPassenger/queryOrderWaitTime",
"req_type": "post" "req_type": "post",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": True,
"is_json": True,
}, },
"queryMyOrderNoCompleteUrl": { "queryMyOrderNoCompleteUrl": {
"req_url": "https://kyfw.12306.cn/otn/queryOrder/queryMyOrderNoComplete", "req_url": "/otn/queryOrder/queryMyOrderNoComplete",
"req_type": "post" "req_type": "post",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": True,
"is_json": True,
}, },
"initNoCompleteUrl": { "initNoCompleteUrl": {
"req_url": "https://kyfw.12306.cn/otn/queryOrder/initNoComplete", "req_url": "/otn/queryOrder/initNoComplete",
"req_type": "post" "req_type": "post",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": True,
"is_json": True,
}, },
"cancelNoCompleteMyOrder": { "cancelNoCompleteMyOrder": {
"req_url": "https://kyfw.12306.cn/otn/queryOrder/cancelNoCompleteMyOrder", "req_url": "/otn/queryOrder/cancelNoCompleteMyOrder",
"req_type": "post",
"Referer": "",
"Host": "kyfw.12306.cn",
"re_try": 10,
"re_time": 0.1,
"is_logger": True,
"is_json": True,
},
"cdn_host": {
"req_url": "http://ping.chinaz.com/kyfw.12306.cn",
"req_type": "post"
},
"cdn_list": {
"req_url": "http://ping.chinaz.com/iframe.ashx?t=ping&callback=jQuery111304824429956769827_{}".format(int(round(time.time() * 1000))),
"req_type": "post" "req_type": "post"
} }
} }

View File

@ -49,7 +49,7 @@ class RClient(object):
if __name__ == '__main__': if __name__ == '__main__':
rc = RClient('931128603', 'qazWSX1995',) rc = RClient('931128603', '',)
im = open('tkcode', 'rb').read() im = open('tkcode', 'rb').read()
print rc.rk_create(im, 6113) print rc.rk_create(im, 6113)

View File

@ -25,7 +25,7 @@ class GoLogin:
def cookietp(self): def cookietp(self):
print("正在获取cookie") print("正在获取cookie")
url = self.urlConf["loginInit"]["req_url"] url = self.urlConf["loginInit"]
self.httpClint.send(url) self.httpClint.send(url)
# Url = "https://kyfw.12306.cn/otn/login/init" # Url = "https://kyfw.12306.cn/otn/login/init"
# myurllib2.get(Url) # myurllib2.get(Url)
@ -70,8 +70,9 @@ class GoLogin:
print ("下载验证码...") print ("下载验证码...")
codeimgUrl = code_url codeimgUrl = code_url
img_path = './tkcode' img_path = './tkcode'
result = self.httpClint.send(codeimgUrl, is_logger=False) result = self.httpClint.send(codeimgUrl)
try: try:
print("下载验证码成功")
open(img_path, 'wb').write(result) open(img_path, 'wb').write(result)
except OSError as e: except OSError as e:
print (e) print (e)
@ -122,7 +123,7 @@ class GoLogin:
def auth(self): def auth(self):
"""认证""" """认证"""
authUrl = self.urlConf["auth"]["req_url"] authUrl = self.urlConf["auth"]
authData = {"appid": "otn"} authData = {"appid": "otn"}
tk = self.httpClint.send(authUrl, authData) tk = self.httpClint.send(authUrl, authData)
return tk return tk
@ -132,7 +133,7 @@ class GoLogin:
验证码校验 验证码校验
:return: :return:
""" """
codeCheck = self.urlConf["codeCheck"]["req_url"] codeCheck = self.urlConf["codeCheck"]
codeCheckData = { codeCheckData = {
"answer": self.randCode, "answer": self.randCode,
"rand": "sjrand", "rand": "sjrand",
@ -155,7 +156,7 @@ class GoLogin:
:param passwd: :param passwd:
:return: 权限校验码 :return: 权限校验码
""" """
logurl = self.urlConf["login"]["req_url"] logurl = self.urlConf["login"]
logData = { logData = {
"username": user, "username": user,
"password": passwd, "password": passwd,
@ -188,7 +189,7 @@ class GoLogin:
if not uamtk: if not uamtk:
return "权限校验码不能为空" return "权限校验码不能为空"
else: else:
uamauthclientUrl = self.urlConf["uamauthclient"]["req_url"] uamauthclientUrl = self.urlConf["uamauthclient"]
data = {"tk": uamtk} data = {"tk": uamtk}
uamauthclientResult = self.httpClint.send(uamauthclientUrl, data) uamauthclientResult = self.httpClint.send(uamauthclientUrl, data)
if uamauthclientResult: if uamauthclientResult:
@ -199,7 +200,7 @@ class GoLogin:
return False return False
else: else:
self.httpClint.send(uamauthclientUrl, data) self.httpClint.send(uamauthclientUrl, data)
url = self.urlConf["getUserInfo"]["req_url"] url = self.urlConf["getUserInfo"]
self.httpClint.send(url) self.httpClint.send(url)
def go_login(self): def go_login(self):
@ -220,7 +221,7 @@ class GoLogin:
while True: while True:
self.cookietp() self.cookietp()
self.httpClint.set_cookies(_jc_save_wfdc_flag="dc", _jc_save_fromStation="%u4E0A%u6D77%u8679%u6865%2CAOH", _jc_save_toStation="%u5170%u5DDE%u897F%2CLAJ", _jc_save_fromDate="2018-02-14", _jc_save_toDate="2018-01-16", RAIL_DEVICEID="EN_3_EGSe2GWGHXJeCkFQ52kHvNCrNlkz9n1GOqqQ1wR0i98WsD8Gj-a3YHZ-XYKeESWgCiJyyucgSwkFOzVHhHqfpidLPcm2vK9n83uzOPuShO3Pl4lCydAtQu4BdFqz-RVmiduNFixrcrN_Ny43135JiEtqLaI") self.httpClint.set_cookies(_jc_save_wfdc_flag="dc", _jc_save_fromStation="%u4E0A%u6D77%u8679%u6865%2CAOH", _jc_save_toStation="%u5170%u5DDE%u897F%2CLAJ", _jc_save_fromDate="2018-02-14", _jc_save_toDate="2018-01-16", RAIL_DEVICEID="EN_3_EGSe2GWGHXJeCkFQ52kHvNCrNlkz9n1GOqqQ1wR0i98WsD8Gj-a3YHZ-XYKeESWgCiJyyucgSwkFOzVHhHqfpidLPcm2vK9n83uzOPuShO3Pl4lCydAtQu4BdFqz-RVmiduNFixrcrN_Ny43135JiEtqLaI")
self.readImg(self.urlConf["getCodeImg"]["req_url"]) self.readImg(self.urlConf["getCodeImg"])
self.randCode = self.getRandCode() self.randCode = self.getRandCode()
login_num += 1 login_num += 1
self.auth() self.auth()

View File

@ -1,12 +1,15 @@
# -*- coding=utf-8 -*- # -*- coding=utf-8 -*-
import json import json
import datetime import datetime
import random
import re import re
import socket import socket
import urllib import urllib
import sys import sys
import time import time
from collections import OrderedDict from collections import OrderedDict
from agency.cdn_utils import CDNProxy
from config import urlConf from config import urlConf
from init import login from init import login
from config.emailConf import sendEmail from config.emailConf import sendEmail
@ -45,6 +48,7 @@ class select:
self.login = GoLogin(self.httpClint, self.confUrl, self.is_aotu_code, self.aotu_code_type) self.login = GoLogin(self.httpClint, self.confUrl, self.is_aotu_code, self.aotu_code_type)
self.is_download_img = False self.is_download_img = False
self.randCode = "" self.randCode = ""
self.cdn_list = []
def get_ticket_info(self): def get_ticket_info(self):
""" """
@ -144,6 +148,7 @@ class select:
:param code_url: 验证码url :param code_url: 验证码url
:return: :return:
""" """
print(code_url)
self.login.readImg(code_url=code_url) self.login.readImg(code_url=code_url)
self.is_aotu_code = True self.is_aotu_code = True
@ -162,8 +167,8 @@ class select:
获取提交车票请求token 获取提交车票请求token
:return: token :return: token
""" """
initdc_url = self.confUrl["initdc_url"]["req_url"] initdc_url = self.confUrl["initdc_url"]
initdc_result = self.httpClint.send(initdc_url) initdc_result = self.httpClint.send(initdc_url,)
token_name = re.compile(r"var globalRepeatSubmitToken = '(\S+)'") token_name = re.compile(r"var globalRepeatSubmitToken = '(\S+)'")
ticketInfoForPassengerForm_name = re.compile(r'var ticketInfoForPassengerForm=(\{.+\})?') ticketInfoForPassengerForm_name = re.compile(r'var ticketInfoForPassengerForm=(\{.+\})?')
order_request_params_name = re.compile(r'var orderRequestDTO=(\{.+\})?') order_request_params_name = re.compile(r'var orderRequestDTO=(\{.+\})?')
@ -184,7 +189,7 @@ class select:
获取乘客信息 获取乘客信息
:return: :return:
""" """
get_passengerDTOs = self.confUrl["get_passengerDTOs"]["req_url"] get_passengerDTOs = self.confUrl["get_passengerDTOs"]
get_data = { get_data = {
'_json_att': None, '_json_att': None,
'REPEAT_SUBMIT_TOKEN': self.token 'REPEAT_SUBMIT_TOKEN': self.token
@ -205,9 +210,9 @@ class select:
raise PassengerUserException("未查找到常用联系人,请先添加联系人在试试") raise PassengerUserException("未查找到常用联系人,请先添加联系人在试试")
def submitOrderRequestFunc(self, from_station, to_station, station_date=None): def submitOrderRequestFunc(self, from_station, to_station, station_date=None):
select_url = self.confUrl["select_url"]["req_url"].format( self.confUrl["select_url"]["req_url"] = self.confUrl["select_url"]["req_url"].format(
station_date, from_station, to_station) station_date, from_station, to_station)
station_ticket = self.httpClint.send(select_url, is_logger=False) station_ticket = self.httpClint.send(self.confUrl["select_url"])
return json.loads(station_ticket) return json.loads(station_ticket)
def submitOrderRequestImplement(self, from_station, to_station,): def submitOrderRequestImplement(self, from_station, to_station,):
@ -249,8 +254,7 @@ class select:
break break
else: else:
print ('正在尝试提交订票...') print ('正在尝试提交订票...')
t = threading.Thread(target=self.callReadImg, args=self.confUrl["codeImgByOrder"]["req_url"])
t.start()
# self.submitOrderRequestFunc(from_station, to_station, self.time()) # self.submitOrderRequestFunc(from_station, to_station, self.time())
self.submit_station() self.submit_station()
self.getPassengerTicketStr(self._station_seat[j].encode("utf8")) self.getPassengerTicketStr(self._station_seat[j].encode("utf8"))
@ -272,7 +276,7 @@ class select:
检查用户是否达到订票条件 检查用户是否达到订票条件
:return: :return:
""" """
check_user_url = self.confUrl["check_user_url"]["req_url"] check_user_url = self.confUrl["check_user_url"]
data = {"_json_att": ""} data = {"_json_att": ""}
check_user = self.httpClint.send(check_user_url, data) check_user = self.httpClint.send(check_user_url, data)
check_user_flag = check_user['data']['flag'] check_user_flag = check_user['data']['flag']
@ -300,8 +304,7 @@ class select:
:param secretStr: 提交车次加密 :param secretStr: 提交车次加密
:return: :return:
""" """
submit_station_url = self.confUrl["submit_station_url"]
submit_station_url = self.confUrl["submit_station_url"]["req_url"]
data = [('secretStr', urllib.unquote(self.secretStr)), # 字符串加密 data = [('secretStr', urllib.unquote(self.secretStr)), # 字符串加密
('train_date', self.time()), # 出发时间 ('train_date', self.time()), # 出发时间
('back_train_date', self.time()), # 返程时间 ('back_train_date', self.time()), # 返程时间
@ -355,21 +358,21 @@ class select:
raise PassengerUserException("联系人不在列表中,请查证后添加") raise PassengerUserException("联系人不在列表中,请查证后添加")
if len(self.user_info) is 1: if len(self.user_info) is 1:
passengerTicketStrList.append( passengerTicketStrList.append(
'0,' + self.user_info[0]['passenger_id_type_code'] + "," + self.user_info[0][ '0,' + self.user_info[0]['passenger_type'] + "," + self.user_info[0][
"passenger_name"] + "," + "passenger_name"] + "," +
self.user_info[0]['passenger_type'] + "," + self.user_info[0]['passenger_id_no'] + "," + self.user_info[0]['passenger_id_type_code'] + "," + self.user_info[0]['passenger_id_no'] + "," +
self.user_info[0]['mobile_no'] + ',N') self.user_info[0]['mobile_no'] + ',N')
oldPassengerStr.append( oldPassengerStr.append(
self.user_info[0]['passenger_name'] + "," + self.user_info[0]['passenger_type'] + "," + self.user_info[0]['passenger_name'] + "," + self.user_info[0]['passenger_id_type_code'] + "," +
self.user_info[0]['passenger_id_no'] + "," + self.user_info[0]['passenger_type'] + '_') self.user_info[0]['passenger_id_no'] + "," + self.user_info[0]['passenger_type'] + '_')
else: else:
for i in range(len(self.user_info)): for i in range(len(self.user_info)):
passengerTicketStrList.append( passengerTicketStrList.append(
'0,' + self.user_info[i]['passenger_id_type_code'] + "," + self.user_info[i][ '0,' + self.user_info[i]['passenger_type'] + "," + self.user_info[i][
"passenger_name"] + "," + self.user_info[i]['passenger_type'] + "," + self.user_info[i][ "passenger_name"] + "," + self.user_info[i]['passenger_id_type_code'] + "," + self.user_info[i][
'passenger_id_no'] + "," + self.user_info[i]['mobile_no'] + ',N_' + self.set_type) 'passenger_id_no'] + "," + self.user_info[i]['mobile_no'] + ',N_' + self.set_type)
oldPassengerStr.append( oldPassengerStr.append(
self.user_info[i]['passenger_name'] + "," + self.user_info[i]['passenger_type'] + "," + self.user_info[i]['passenger_name'] + "," + self.user_info[i]['passenger_id_type_code'] + "," +
self.user_info[i]['passenger_id_no'] + "," + self.user_info[i]['passenger_type'] + '_') self.user_info[i]['passenger_id_no'] + "," + self.user_info[i]['passenger_type'] + '_')
return passengerTicketStrList, oldPassengerStr return passengerTicketStrList, oldPassengerStr
@ -381,7 +384,7 @@ class select:
:return: :return:
""" """
passengerTicketStrList, oldPassengerStr = self.getPassengerTicketStrListAndOldPassengerStr() passengerTicketStrList, oldPassengerStr = self.getPassengerTicketStrListAndOldPassengerStr()
checkOrderInfoUrl = self.confUrl["checkOrderInfoUrl"]["req_url"] checkOrderInfoUrl = self.confUrl["checkOrderInfoUrl"]
data = OrderedDict() data = OrderedDict()
data['cancel_flag'] = 2 data['cancel_flag'] = 2
data['bed_level_order_num'] = "000000000000000000000000000000" data['bed_level_order_num'] = "000000000000000000000000000000"
@ -421,7 +424,7 @@ class select:
""" """
l_time = time.localtime(time.time()) l_time = time.localtime(time.time())
new_train_date = time.strftime("%a %b %d %Y", l_time) new_train_date = time.strftime("%a %b %d %Y", l_time)
getQueueCountUrl = self.confUrl["getQueueCountUrl"]["req_url"] getQueueCountUrl = self.confUrl["getQueueCountUrl"]
data = { data = {
'train_date': str(new_train_date) + " 00:00:00 GMT+0800 (中国标准时间)", 'train_date': str(new_train_date) + " 00:00:00 GMT+0800 (中国标准时间)",
'train_no': self.get_ticketInfoForPassengerForm()['queryLeftTicketRequestDTO']['train_no'], 'train_no': self.get_ticketInfoForPassengerForm()['queryLeftTicketRequestDTO']['train_no'],
@ -467,7 +470,7 @@ class select:
识别验证码 识别验证码
:return: 识别结果 :return: 识别结果
""" """
checkRandCodeAnsyn = self.confUrl["checkRandCodeAnsyn"]["req_url"] checkRandCodeAnsyn = self.confUrl["checkRandCodeAnsyn"]
randData = { randData = {
"randCode": randCode, "randCode": randCode,
"rand": "randp", "rand": "randp",
@ -484,7 +487,7 @@ class select:
""" """
passengerTicketStrList, oldPassengerStr = self.getPassengerTicketStrListAndOldPassengerStr() passengerTicketStrList, oldPassengerStr = self.getPassengerTicketStrListAndOldPassengerStr()
checkQueueOrderUrl = self.confUrl["checkQueueOrderUrl"]["req_url"] checkQueueOrderUrl = self.confUrl["checkQueueOrderUrl"]
data = { data = {
"passengerTicketStr": self.set_type + "," + ",".join(passengerTicketStrList).rstrip("_{0}".format(self.set_type)), "passengerTicketStr": self.set_type + "," + ",".join(passengerTicketStrList).rstrip("_{0}".format(self.set_type)),
"oldPassengerStr": "".join(oldPassengerStr), "oldPassengerStr": "".join(oldPassengerStr),
@ -503,29 +506,21 @@ class select:
try: try:
if is_node_code: if is_node_code:
print("正在使用自动识别验证码功能") print("正在使用自动识别验证码功能")
while True: for i in range(3):
if self.randCode: codeImgByOrder = self.confUrl["codeImgByOrder"]
checkcode = self.checkRandCodeAnsyn(self.randCode) self.login.readImg(codeImgByOrder)
if checkcode == 'TRUE': randCode = self.login.getRandCode()
print("验证码通过,正在提交订单") checkcode = self.checkRandCodeAnsyn(randCode)
data['randCode'] = self.randCode if checkcode == 'TRUE':
self.randCode = "" print("验证码通过,正在提交订单")
break data['randCode'] = randCode
else: break
for i in range(3): else:
codeImgByOrder = self.confUrl["codeImgByOrder"]["req_url"] print ("验证码有误, {0}次尝试重试".format(i+1))
self.login.readImg(codeImgByOrder) print("验证码超过限定次数3次放弃此次订票机会!")
randCode = self.login.getRandCode()
if checkcode == 'TRUE':
print("验证码通过,正在提交订单")
data['randCode'] = randCode
break
else:
print ("验证码有误, {0}次尝试重试".format(i+1))
print("验证码超过限定次数3次放弃此次订票机会!")
break
else: else:
print("不需要验证码") print("不需要验证码")
time.sleep(0.5)
checkQueueOrderResult = self.httpClint.send(checkQueueOrderUrl, data) checkQueueOrderResult = self.httpClint.send(checkQueueOrderUrl, data)
if "status" in checkQueueOrderResult and checkQueueOrderResult["status"]: if "status" in checkQueueOrderResult and checkQueueOrderResult["status"]:
c_data = checkQueueOrderResult["data"] if "data" in checkQueueOrderResult else {} c_data = checkQueueOrderResult["data"] if "data" in checkQueueOrderResult else {}
@ -541,7 +536,7 @@ class select:
elif "messages" in checkQueueOrderResult and checkQueueOrderResult["messages"]: elif "messages" in checkQueueOrderResult and checkQueueOrderResult["messages"]:
print("提交订单失败,错误信息: " + checkQueueOrderResult["messages"]) print("提交订单失败,错误信息: " + checkQueueOrderResult["messages"])
else: else:
print("提交订单中,请耐心等待:" + str(checkQueueOrderResult["validateMessages"])) print("提交订单中,请耐心等待:" + checkQueueOrderResult["message"])
except ValueError: except ValueError:
print("接口 {} 无响应".format(checkQueueOrderUrl)) print("接口 {} 无响应".format(checkQueueOrderUrl))
@ -562,7 +557,7 @@ class select:
break break
try: try:
data = {"random": _random, "tourFlag": "dc"} data = {"random": _random, "tourFlag": "dc"}
queryOrderWaitTimeUrl = self.confUrl["queryOrderWaitTimeUrl"]["req_url"] queryOrderWaitTimeUrl = self.confUrl["queryOrderWaitTimeUrl"]
queryOrderWaitTimeResult = self.httpClint.send(queryOrderWaitTimeUrl, data) queryOrderWaitTimeResult = self.httpClint.send(queryOrderWaitTimeUrl, data)
except ValueError: except ValueError:
queryOrderWaitTimeResult = {} queryOrderWaitTimeResult = {}
@ -595,7 +590,7 @@ class select:
:return: :return:
""" """
self.initNoComplete() self.initNoComplete()
queryMyOrderNoCompleteUrl = self.confUrl["queryMyOrderNoCompleteUrl"]["req_url"] queryMyOrderNoCompleteUrl = self.confUrl["queryMyOrderNoCompleteUrl"]
data = {"_json_att": ""} data = {"_json_att": ""}
try: try:
queryMyOrderNoCompleteResult = self.httpClint.send(queryMyOrderNoCompleteUrl, data) queryMyOrderNoCompleteResult = self.httpClint.send(queryMyOrderNoCompleteUrl, data)
@ -624,7 +619,7 @@ class select:
:return: :return:
""" """
self.httpClint.set_cookies(acw_tc="AQAAAEnFJnekLwwAtGHjZZCr79B6dpXk", current_captcha_type="Z") self.httpClint.set_cookies(acw_tc="AQAAAEnFJnekLwwAtGHjZZCr79B6dpXk", current_captcha_type="Z")
initNoCompleteUrl = self.confUrl["initNoCompleteUrl"]["req_url"] initNoCompleteUrl = self.confUrl["initNoCompleteUrl"]
data = {"_json_att": ""} data = {"_json_att": ""}
self.httpClint.send(initNoCompleteUrl, data) self.httpClint.send(initNoCompleteUrl, data)
@ -634,7 +629,7 @@ class select:
:param sequence_no: 订单编号 :param sequence_no: 订单编号
:return: :return:
""" """
cancelNoCompleteMyOrderUrl = self.confUrl["cancelNoCompleteMyOrder"]["req_url"] cancelNoCompleteMyOrderUrl = self.confUrl["cancelNoCompleteMyOrder"]
cancelNoCompleteMyOrderData = { cancelNoCompleteMyOrderData = {
"sequence_no": sequence_no, "sequence_no": sequence_no,
"cancel_flag": "cancel_order", "cancel_flag": "cancel_order",
@ -648,17 +643,12 @@ class select:
else: else:
print("排队超时,取消订单失败, 订单号{0}".format(sequence_no)) print("排队超时,取消订单失败, 订单号{0}".format(sequence_no))
# def call_submit_ticket(self, function_name=None): def set_cdn(self):
# """ """
# 订票失败回调方法默认执行submitOrderRequest() 设置cdn
# 此方法暂不使用 :return:
# :param function_name: """
# :return: self.httpClint.cdn = eval(self.cdn_list[random.randint(0, len(self.cdn_list)-1)])["result"].replace("'", "")
# """
# if function_name:
# self.function_name()
# else:
# self.submitOrderRequest()
def call_login(self, auth=False): def call_login(self, auth=False):
""" """
@ -671,6 +661,16 @@ class select:
self.login.go_login() self.login.go_login()
def main(self): def main(self):
is_cdn = _get_yaml()["is_cdn"]
if is_cdn == 1:
CDN = CDNProxy()
self.cdn_list = CDN.all_cdn()
if self.cdn_list:
print("开启cdn查询")
print("本次cdn总数为{}".format(len(self.cdn_list)))
self.set_cdn()
else:
raise ticketConfigException("cdn列表为空请先加载cdn")
self.call_login() self.call_login()
from_station, to_station = self.station_table(self.from_station, self.to_station) from_station, to_station = self.station_table(self.from_station, self.to_station)
self.check_user() self.check_user()
@ -689,7 +689,8 @@ class select:
self.call_login() self.call_login()
start_time = datetime.datetime.now() start_time = datetime.datetime.now()
self.submitOrderRequestImplement(from_station, to_station) self.submitOrderRequestImplement(from_station, to_station)
print "正在第{0}次查询 乘车日期: {1} 车次{2} 查询无票 代理设置 无 总耗时{3}ms".format(num, ",".join(self.station_dates), ",".join(self.station_trains), (datetime.datetime.now()-start_time).microseconds/1000) print "正在第{0}次查询 乘车日期: {1} 车次{2} 查询无票 cdn查询ip {4} 总耗时{3}ms".format(num, ",".join(self.station_dates), ",".join(self.station_trains), (datetime.datetime.now()-start_time).microseconds/1000, self.httpClint.cdn)
self.set_cdn()
except PassengerUserException as e: except PassengerUserException as e:
print e.message print e.message
break break
@ -712,8 +713,8 @@ class select:
print(e.message) print(e.message)
except KeyError as e: except KeyError as e:
print(e.message) print(e.message)
except TypeError as e: # except TypeError as e:
print("12306接口无响应正在重试 {0}".format(e.message)) # print("12306接口无响应正在重试 {0}".format(e.message))
except socket.error as e: except socket.error as e:
print(e.message) print(e.message)

View File

@ -18,6 +18,7 @@ class HTTPClient(object):
:param headers: Must be a dict. Such as headers={'Content_Type':'text/html'} :param headers: Must be a dict. Such as headers={'Content_Type':'text/html'}
""" """
self.initS() self.initS()
self._cdn = None
def initS(self): def initS(self):
self._s = requests.Session() self._s = requests.Session()
@ -79,9 +80,18 @@ class HTTPClient(object):
self._s.headers.update({"Referer": referer}) self._s.headers.update({"Referer": referer})
return self return self
def send(self, url, data=None, is_logger=True, **kwargs): @property
def cdn(self):
return self._cdn
@cdn.setter
def cdn(self, cdn):
self._cdn = cdn
def send(self, urls, data=None, **kwargs):
"""send request to url.If response 200,return response, else return None.""" """send request to url.If response 200,return response, else return None."""
allow_redirects = False allow_redirects = False
is_logger = urls["is_logger"]
error_data = {"code": 99999, "message": "重试次数达到上限"} error_data = {"code": 99999, "message": "重试次数达到上限"}
if data: if data:
method = "post" method = "post"
@ -91,14 +101,22 @@ class HTTPClient(object):
self.resetHeaders() self.resetHeaders()
if is_logger: if is_logger:
logger.log( logger.log(
u"url: {0}\n入参: {1}\n请求方式: {2}\n".format(url,data,method,)) u"url: {0}\n入参: {1}\n请求方式: {2}\n".format(urls["req_url"],data,method,))
for i in range(10): if self.cdn:
self.setHeadersHost(urls["Host"])
url_host = self.cdn
else:
self.setHeadersHost("")
url_host = urls["Host"]
for i in range(urls["re_try"]):
try: try:
requests.packages.urllib3.disable_warnings()
response = self._s.request(method=method, response = self._s.request(method=method,
timeout=10, timeout=10,
url=url, url="https://" + url_host + urls["req_url"],
data=data, data=data,
allow_redirects=allow_redirects, allow_redirects=allow_redirects,
verify=False,
**kwargs) **kwargs)
if response.status_code == 200: if response.status_code == 200:
if response.content: if response.content:
@ -108,10 +126,10 @@ class HTTPClient(object):
return json.loads(response.content) if method == "post" else response.content return json.loads(response.content) if method == "post" else response.content
else: else:
logger.log( logger.log(
u"url: {} 返回参数为空".format(url)) u"url: {} 返回参数为空".format(urls["req_url"]))
return error_data return error_data
else: else:
sleep(0.1) sleep(urls["re_time"])
except (requests.exceptions.Timeout, requests.exceptions.ReadTimeout, requests.exceptions.ConnectionError): except (requests.exceptions.Timeout, requests.exceptions.ReadTimeout, requests.exceptions.ConnectionError):
pass pass
except socket.error: except socket.error:

BIN
tkcode

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB