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">
<component name="ChangeListManager">
<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$/config/urlConf.py" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/myException/UserPasswordException.py" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/markdown-exported-files.xml" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/agency/cdn_list" />
<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$/README.md" afterPath="$PROJECT_DIR$/README.md" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/config/ticketConf.py" afterPath="$PROJECT_DIR$/config/ticketConf.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<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/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/myurllib2.py" afterPath="$PROJECT_DIR$/myUrllib/myurllib2.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/run.py" afterPath="$PROJECT_DIR$/run.py" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" 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$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$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$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" />
@ -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$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$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$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>
@ -50,8 +51,8 @@
<file leaf-file-name="login.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/init/login.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2030">
<caret line="145" column="28" lean-forward="false" selection-start-line="141" selection-start-column="7" selection-end-line="145" selection-end-column="28" />
<state relative-caret-position="178">
<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>
<element signature="e#41#54#0" expanded="true" />
</folding>
@ -59,62 +60,28 @@
</provider>
</entry>
</file>
<file leaf-file-name="damatuWeb.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/damatuCode/damatuWeb.py">
<file leaf-file-name="cdn_list" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/cdn_list">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="294">
<caret line="21" column="43" lean-forward="false" selection-start-line="21" selection-start-column="43" selection-end-line="21" selection-end-column="43" />
<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" />
<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>
</file>
<file leaf-file-name="ticketConf.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/config/ticketConf.py">
<file leaf-file-name="httpUtils.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/myUrllib/httpUtils.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="168">
<caret line="12" column="7" lean-forward="true" selection-start-line="12" selection-start-column="7" selection-end-line="12" selection-end-column="7" />
<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#46#55#0" expanded="true" />
<element signature="e#23#38#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</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">
<entry file="file://$PROJECT_DIR$/requirements.txt">
<provider selected="true" editor-type-id="text-editor">
@ -125,11 +92,67 @@
</provider>
</entry>
</file>
<file leaf-file-name="ticketNumOutException.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/myException/ticketNumOutException.py">
<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="0">
<caret line="0" column="27" lean-forward="false" selection-start-line="0" selection-start-column="27" selection-end-line="0" selection-end-column="27" />
<state relative-caret-position="213">
<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 />
</state>
</provider>
@ -146,36 +169,36 @@
</component>
<component name="FindInProjectRecents">
<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</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>
</component>
<component name="Git.Settings">
@ -212,7 +235,6 @@
<option value="$PROJECT_DIR$/yixing/myUrllib/myurllib2.py" />
<option value="$PROJECT_DIR$/yixing/myException/ticketIsExitsException.py" />
<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/config/ticket_config.yaml" />
<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$/config/ticketConf.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$/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$/agency/cdn_utils.py" />
<option value="$PROJECT_DIR$/config/ticket_config.yaml" />
</list>
</option>
@ -258,8 +290,6 @@
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scope" />
<pane id="Scratches" />
<pane id="ProjectPane">
<subPane>
<expand>
@ -267,30 +297,22 @@
<item name="12306" type="b2602c69:ProjectViewProjectNode" />
<item name="12306" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="12306" type="b2602c69:ProjectViewProjectNode" />
<item name="12306" type="462c0819:PsiDirectoryNode" />
<item name="agency" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="12306" type="b2602c69:ProjectViewProjectNode" />
<item name="12306" type="462c0819:PsiDirectoryNode" />
<item name="config" type="462c0819:PsiDirectoryNode" />
</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>
<select />
</subPane>
</pane>
<pane id="Scratches" />
<pane id="Scope" />
</panes>
</component>
<component name="PropertiesComponent">
@ -304,14 +326,15 @@
</component>
<component name="RecentsManager">
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$" />
<recent name="$PROJECT_DIR$/yixing/config" />
</key>
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/myException" />
<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="D:\my_work\12306" />
<recent name="D:\my_work\12306\12306login" />
</key>
</component>
<component name="RunDashboard">
@ -326,7 +349,7 @@
</list>
</option>
</component>
<component name="RunManager" selected="Python.run (1)">
<component name="RunManager" selected="Python.cdn_utils">
<configuration name="12306 (3)" type="PythonConfigurationType" factoryName="Python">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
@ -558,20 +581,20 @@
<option name="USE_KEYWORD" value="false" />
<method />
</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="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<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="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<module name="12306" />
<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="SHOW_COMMAND_LINE" 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="1" class="java.lang.String" itemvalue="Python.run" />
<item index="2" class="java.lang.String" itemvalue="Python.select_ticket_info" />
<item index="3" class="java.lang.String" itemvalue="Python.haha" />
<item index="4" class="java.lang.String" itemvalue="Python.run (1)" />
<item index="5" class="java.lang.String" itemvalue="Python.select_ticket_info (1)" />
<item index="3" 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.cdn_utils" />
</list>
<recent_temporary>
<list size="5">
<item index="0" class="java.lang.String" itemvalue="Python.run (1)" />
<item index="1" class="java.lang.String" itemvalue="Python.select_ticket_info (1)" />
<item index="0" class="java.lang.String" itemvalue="Python.cdn_utils" />
<item index="1" class="java.lang.String" itemvalue="Python.run (1)" />
<item index="2" class="java.lang.String" itemvalue="Python.run" />
<item index="3" class="java.lang.String" itemvalue="Python.select_ticket_info" />
<item index="4" class="java.lang.String" itemvalue="Python.haha" />
<item index="3" class="java.lang.String" itemvalue="Python.select_ticket_info (1)" />
<item index="4" class="java.lang.String" itemvalue="Python.select_ticket_info" />
</list>
</recent_temporary>
</component>
@ -845,23 +868,93 @@
<option name="project" value="LOCAL" />
<updated>1515678353449</updated>
</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 />
</component>
<component name="ToolWindowManager">
<frame x="0" y="0" width="1440" height="900" extended-state="0" />
<editor active="true" />
<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="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="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="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="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="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="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.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="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" />
@ -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="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="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="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="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="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="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="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="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.33" 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.3297568" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
</layout-to-restore>
</component>
<component name="TypeScriptGeneratedFilesManager">
@ -929,8 +1022,6 @@
<option name="myLimit" value="2678400000" />
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="常规更新" />
<MESSAGE value="修改查询接口配置有误" />
<MESSAGE value="增加过滤车次配置" />
<MESSAGE value="增加配置" />
<MESSAGE value="增加预售车次订票休眠时间配置" />
@ -946,79 +1037,25 @@
<MESSAGE value="提交验证码拉去类别问题" />
<MESSAGE value="增加提交订单验证码校验" />
<MESSAGE value="跳出下单循环" />
<MESSAGE value="fix" />
<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 name="XDebuggerManager">
<breakpoint-manager>
<option name="time" value="21" />
<option name="time" value="34" />
</breakpoint-manager>
<watches-manager />
</component>
<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/station_name.txt" />
<entry file="file:///System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py">
@ -1052,29 +1089,6 @@
</state>
</provider>
</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">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
@ -1091,36 +1105,219 @@
</state>
</provider>
</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">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="168">
<caret line="12" column="7" lean-forward="true" selection-start-line="12" selection-start-column="7" selection-end-line="12" selection-end-column="7" />
<state relative-caret-position="98">
<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>
<element signature="e#46#55#0" expanded="true" />
<element signature="e#45#54#0" expanded="true" />
</folding>
</state>
</provider>
</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">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2030">
<caret line="145" column="28" lean-forward="false" selection-start-line="141" selection-start-column="7" selection-end-line="145" selection-end-column="28" />
<state relative-caret-position="178">
<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>
<element signature="e#41#54#0" expanded="true" />
</folding>
</state>
</provider>
</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">
<state relative-caret-position="294">
<caret line="21" column="43" lean-forward="false" selection-start-line="21" selection-start-column="43" selection-end-line="21" selection-end-column="43" />
<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#24#38#0" expanded="true" />
<element signature="e#0#13#0" expanded="true" />
</folding>
</state>
</provider>
</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">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="70">
@ -1129,20 +1326,56 @@
</state>
</provider>
</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">
<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" />
<state relative-caret-position="213">
<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>
<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">
<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" />
<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>

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

View File

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

View File

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

View File

@ -25,7 +25,7 @@ class GoLogin:
def cookietp(self):
print("正在获取cookie")
url = self.urlConf["loginInit"]["req_url"]
url = self.urlConf["loginInit"]
self.httpClint.send(url)
# Url = "https://kyfw.12306.cn/otn/login/init"
# myurllib2.get(Url)
@ -70,8 +70,9 @@ class GoLogin:
print ("下载验证码...")
codeimgUrl = code_url
img_path = './tkcode'
result = self.httpClint.send(codeimgUrl, is_logger=False)
result = self.httpClint.send(codeimgUrl)
try:
print("下载验证码成功")
open(img_path, 'wb').write(result)
except OSError as e:
print (e)
@ -122,7 +123,7 @@ class GoLogin:
def auth(self):
"""认证"""
authUrl = self.urlConf["auth"]["req_url"]
authUrl = self.urlConf["auth"]
authData = {"appid": "otn"}
tk = self.httpClint.send(authUrl, authData)
return tk
@ -132,7 +133,7 @@ class GoLogin:
验证码校验
:return:
"""
codeCheck = self.urlConf["codeCheck"]["req_url"]
codeCheck = self.urlConf["codeCheck"]
codeCheckData = {
"answer": self.randCode,
"rand": "sjrand",
@ -155,7 +156,7 @@ class GoLogin:
:param passwd:
:return: 权限校验码
"""
logurl = self.urlConf["login"]["req_url"]
logurl = self.urlConf["login"]
logData = {
"username": user,
"password": passwd,
@ -188,7 +189,7 @@ class GoLogin:
if not uamtk:
return "权限校验码不能为空"
else:
uamauthclientUrl = self.urlConf["uamauthclient"]["req_url"]
uamauthclientUrl = self.urlConf["uamauthclient"]
data = {"tk": uamtk}
uamauthclientResult = self.httpClint.send(uamauthclientUrl, data)
if uamauthclientResult:
@ -199,7 +200,7 @@ class GoLogin:
return False
else:
self.httpClint.send(uamauthclientUrl, data)
url = self.urlConf["getUserInfo"]["req_url"]
url = self.urlConf["getUserInfo"]
self.httpClint.send(url)
def go_login(self):
@ -220,7 +221,7 @@ class GoLogin:
while True:
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.readImg(self.urlConf["getCodeImg"]["req_url"])
self.readImg(self.urlConf["getCodeImg"])
self.randCode = self.getRandCode()
login_num += 1
self.auth()

View File

@ -1,12 +1,15 @@
# -*- coding=utf-8 -*-
import json
import datetime
import random
import re
import socket
import urllib
import sys
import time
from collections import OrderedDict
from agency.cdn_utils import CDNProxy
from config import urlConf
from init import login
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.is_download_img = False
self.randCode = ""
self.cdn_list = []
def get_ticket_info(self):
"""
@ -144,6 +148,7 @@ class select:
:param code_url: 验证码url
:return:
"""
print(code_url)
self.login.readImg(code_url=code_url)
self.is_aotu_code = True
@ -162,8 +167,8 @@ class select:
获取提交车票请求token
:return: token
"""
initdc_url = self.confUrl["initdc_url"]["req_url"]
initdc_result = self.httpClint.send(initdc_url)
initdc_url = self.confUrl["initdc_url"]
initdc_result = self.httpClint.send(initdc_url,)
token_name = re.compile(r"var globalRepeatSubmitToken = '(\S+)'")
ticketInfoForPassengerForm_name = re.compile(r'var ticketInfoForPassengerForm=(\{.+\})?')
order_request_params_name = re.compile(r'var orderRequestDTO=(\{.+\})?')
@ -184,7 +189,7 @@ class select:
获取乘客信息
:return:
"""
get_passengerDTOs = self.confUrl["get_passengerDTOs"]["req_url"]
get_passengerDTOs = self.confUrl["get_passengerDTOs"]
get_data = {
'_json_att': None,
'REPEAT_SUBMIT_TOKEN': self.token
@ -205,9 +210,9 @@ class select:
raise PassengerUserException("未查找到常用联系人,请先添加联系人在试试")
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_ticket = self.httpClint.send(select_url, is_logger=False)
station_ticket = self.httpClint.send(self.confUrl["select_url"])
return json.loads(station_ticket)
def submitOrderRequestImplement(self, from_station, to_station,):
@ -249,8 +254,7 @@ class select:
break
else:
print ('正在尝试提交订票...')
t = threading.Thread(target=self.callReadImg, args=self.confUrl["codeImgByOrder"]["req_url"])
t.start()
# self.submitOrderRequestFunc(from_station, to_station, self.time())
self.submit_station()
self.getPassengerTicketStr(self._station_seat[j].encode("utf8"))
@ -272,7 +276,7 @@ class select:
检查用户是否达到订票条件
:return:
"""
check_user_url = self.confUrl["check_user_url"]["req_url"]
check_user_url = self.confUrl["check_user_url"]
data = {"_json_att": ""}
check_user = self.httpClint.send(check_user_url, data)
check_user_flag = check_user['data']['flag']
@ -300,8 +304,7 @@ class select:
:param secretStr: 提交车次加密
:return:
"""
submit_station_url = self.confUrl["submit_station_url"]["req_url"]
submit_station_url = self.confUrl["submit_station_url"]
data = [('secretStr', urllib.unquote(self.secretStr)), # 字符串加密
('train_date', self.time()), # 出发时间
('back_train_date', self.time()), # 返程时间
@ -355,21 +358,21 @@ class select:
raise PassengerUserException("联系人不在列表中,请查证后添加")
if len(self.user_info) is 1:
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"] + "," +
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')
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'] + '_')
else:
for i in range(len(self.user_info)):
passengerTicketStrList.append(
'0,' + self.user_info[i]['passenger_id_type_code'] + "," + self.user_info[i][
"passenger_name"] + "," + self.user_info[i]['passenger_type'] + "," + self.user_info[i][
'0,' + 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)
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'] + '_')
return passengerTicketStrList, oldPassengerStr
@ -381,7 +384,7 @@ class select:
:return:
"""
passengerTicketStrList, oldPassengerStr = self.getPassengerTicketStrListAndOldPassengerStr()
checkOrderInfoUrl = self.confUrl["checkOrderInfoUrl"]["req_url"]
checkOrderInfoUrl = self.confUrl["checkOrderInfoUrl"]
data = OrderedDict()
data['cancel_flag'] = 2
data['bed_level_order_num'] = "000000000000000000000000000000"
@ -421,7 +424,7 @@ class select:
"""
l_time = time.localtime(time.time())
new_train_date = time.strftime("%a %b %d %Y", l_time)
getQueueCountUrl = self.confUrl["getQueueCountUrl"]["req_url"]
getQueueCountUrl = self.confUrl["getQueueCountUrl"]
data = {
'train_date': str(new_train_date) + " 00:00:00 GMT+0800 (中国标准时间)",
'train_no': self.get_ticketInfoForPassengerForm()['queryLeftTicketRequestDTO']['train_no'],
@ -467,7 +470,7 @@ class select:
识别验证码
:return: 识别结果
"""
checkRandCodeAnsyn = self.confUrl["checkRandCodeAnsyn"]["req_url"]
checkRandCodeAnsyn = self.confUrl["checkRandCodeAnsyn"]
randData = {
"randCode": randCode,
"rand": "randp",
@ -484,7 +487,7 @@ class select:
"""
passengerTicketStrList, oldPassengerStr = self.getPassengerTicketStrListAndOldPassengerStr()
checkQueueOrderUrl = self.confUrl["checkQueueOrderUrl"]["req_url"]
checkQueueOrderUrl = self.confUrl["checkQueueOrderUrl"]
data = {
"passengerTicketStr": self.set_type + "," + ",".join(passengerTicketStrList).rstrip("_{0}".format(self.set_type)),
"oldPassengerStr": "".join(oldPassengerStr),
@ -503,29 +506,21 @@ class select:
try:
if is_node_code:
print("正在使用自动识别验证码功能")
while True:
if self.randCode:
checkcode = self.checkRandCodeAnsyn(self.randCode)
if checkcode == 'TRUE':
print("验证码通过,正在提交订单")
data['randCode'] = self.randCode
self.randCode = ""
break
else:
for i in range(3):
codeImgByOrder = self.confUrl["codeImgByOrder"]["req_url"]
self.login.readImg(codeImgByOrder)
randCode = self.login.getRandCode()
if checkcode == 'TRUE':
print("验证码通过,正在提交订单")
data['randCode'] = randCode
break
else:
print ("验证码有误, {0}次尝试重试".format(i+1))
print("验证码超过限定次数3次放弃此次订票机会!")
break
for i in range(3):
codeImgByOrder = self.confUrl["codeImgByOrder"]
self.login.readImg(codeImgByOrder)
randCode = self.login.getRandCode()
checkcode = self.checkRandCodeAnsyn(randCode)
if checkcode == 'TRUE':
print("验证码通过,正在提交订单")
data['randCode'] = randCode
break
else:
print ("验证码有误, {0}次尝试重试".format(i+1))
print("验证码超过限定次数3次放弃此次订票机会!")
else:
print("不需要验证码")
time.sleep(0.5)
checkQueueOrderResult = self.httpClint.send(checkQueueOrderUrl, data)
if "status" in checkQueueOrderResult and checkQueueOrderResult["status"]:
c_data = checkQueueOrderResult["data"] if "data" in checkQueueOrderResult else {}
@ -541,7 +536,7 @@ class select:
elif "messages" in checkQueueOrderResult and checkQueueOrderResult["messages"]:
print("提交订单失败,错误信息: " + checkQueueOrderResult["messages"])
else:
print("提交订单中,请耐心等待:" + str(checkQueueOrderResult["validateMessages"]))
print("提交订单中,请耐心等待:" + checkQueueOrderResult["message"])
except ValueError:
print("接口 {} 无响应".format(checkQueueOrderUrl))
@ -562,7 +557,7 @@ class select:
break
try:
data = {"random": _random, "tourFlag": "dc"}
queryOrderWaitTimeUrl = self.confUrl["queryOrderWaitTimeUrl"]["req_url"]
queryOrderWaitTimeUrl = self.confUrl["queryOrderWaitTimeUrl"]
queryOrderWaitTimeResult = self.httpClint.send(queryOrderWaitTimeUrl, data)
except ValueError:
queryOrderWaitTimeResult = {}
@ -595,7 +590,7 @@ class select:
:return:
"""
self.initNoComplete()
queryMyOrderNoCompleteUrl = self.confUrl["queryMyOrderNoCompleteUrl"]["req_url"]
queryMyOrderNoCompleteUrl = self.confUrl["queryMyOrderNoCompleteUrl"]
data = {"_json_att": ""}
try:
queryMyOrderNoCompleteResult = self.httpClint.send(queryMyOrderNoCompleteUrl, data)
@ -624,7 +619,7 @@ class select:
:return:
"""
self.httpClint.set_cookies(acw_tc="AQAAAEnFJnekLwwAtGHjZZCr79B6dpXk", current_captcha_type="Z")
initNoCompleteUrl = self.confUrl["initNoCompleteUrl"]["req_url"]
initNoCompleteUrl = self.confUrl["initNoCompleteUrl"]
data = {"_json_att": ""}
self.httpClint.send(initNoCompleteUrl, data)
@ -634,7 +629,7 @@ class select:
:param sequence_no: 订单编号
:return:
"""
cancelNoCompleteMyOrderUrl = self.confUrl["cancelNoCompleteMyOrder"]["req_url"]
cancelNoCompleteMyOrderUrl = self.confUrl["cancelNoCompleteMyOrder"]
cancelNoCompleteMyOrderData = {
"sequence_no": sequence_no,
"cancel_flag": "cancel_order",
@ -648,17 +643,12 @@ class select:
else:
print("排队超时,取消订单失败, 订单号{0}".format(sequence_no))
# def call_submit_ticket(self, function_name=None):
# """
# 订票失败回调方法默认执行submitOrderRequest()
# 此方法暂不使用
# :param function_name:
# :return:
# """
# if function_name:
# self.function_name()
# else:
# self.submitOrderRequest()
def set_cdn(self):
"""
设置cdn
:return:
"""
self.httpClint.cdn = eval(self.cdn_list[random.randint(0, len(self.cdn_list)-1)])["result"].replace("'", "")
def call_login(self, auth=False):
"""
@ -671,6 +661,16 @@ class select:
self.login.go_login()
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()
from_station, to_station = self.station_table(self.from_station, self.to_station)
self.check_user()
@ -689,7 +689,8 @@ class select:
self.call_login()
start_time = datetime.datetime.now()
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:
print e.message
break
@ -712,8 +713,8 @@ class select:
print(e.message)
except KeyError as e:
print(e.message)
except TypeError as e:
print("12306接口无响应正在重试 {0}".format(e.message))
# except TypeError as e:
# print("12306接口无响应正在重试 {0}".format(e.message))
except socket.error as e:
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'}
"""
self.initS()
self._cdn = None
def initS(self):
self._s = requests.Session()
@ -79,9 +80,18 @@ class HTTPClient(object):
self._s.headers.update({"Referer": referer})
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."""
allow_redirects = False
is_logger = urls["is_logger"]
error_data = {"code": 99999, "message": "重试次数达到上限"}
if data:
method = "post"
@ -91,14 +101,22 @@ class HTTPClient(object):
self.resetHeaders()
if is_logger:
logger.log(
u"url: {0}\n入参: {1}\n请求方式: {2}\n".format(url,data,method,))
for i in range(10):
u"url: {0}\n入参: {1}\n请求方式: {2}\n".format(urls["req_url"],data,method,))
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:
requests.packages.urllib3.disable_warnings()
response = self._s.request(method=method,
timeout=10,
url=url,
url="https://" + url_host + urls["req_url"],
data=data,
allow_redirects=allow_redirects,
verify=False,
**kwargs)
if response.status_code == 200:
if response.content:
@ -108,10 +126,10 @@ class HTTPClient(object):
return json.loads(response.content) if method == "post" else response.content
else:
logger.log(
u"url: {} 返回参数为空".format(url))
u"url: {} 返回参数为空".format(urls["req_url"]))
return error_data
else:
sleep(0.1)
sleep(urls["re_time"])
except (requests.exceptions.Timeout, requests.exceptions.ReadTimeout, requests.exceptions.ConnectionError):
pass
except socket.error:

BIN
tkcode

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB