confirmation_code 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c0009cee084165c1cabeee0c05d9a4e900569550
4
- data.tar.gz: 3eaf2fc4a90edd34cdf34f5ca6978e62b3663fdc
3
+ metadata.gz: 277868ac26cb91b3bc21850e3a4221294acbf91e
4
+ data.tar.gz: cc8c2d032231a41da55a26c7ed01e137c76fcc46
5
5
  SHA512:
6
- metadata.gz: 06042427c72b5a822eaf1d131154be75b00c34014f2554efd5012ada8230a683d6a8f41425193218cbd1d1c9c380816f87b01b5ca58eb351dee3cfbb75fc11cc
7
- data.tar.gz: 4f0ba8abc5137f3b62e6a99e35de7442c90c999cb7f644801f0c54a67853fa17ddb142ef6684a044b489868b8d4546f2c7a21abd206e3bdedd8ac689af33d57d
6
+ metadata.gz: e58658fe790f6827afa2d2b2130ec0a631a2dfc42c038e8f48d0432c1950990cd519d348bfcb7cff03690a4eea62343c2ae3d5f9b4ac6f1081b10c6a4ba5fd34
7
+ data.tar.gz: 6404e4b19e56032f08a6fc6c11f252ffc7831858fc1cf7afb46e894a7cbe21db43a90e7e97ecb0465d24eada9f3ab123f9428b0655fc4afde63320d48af9f180
data/.gitignore CHANGED
@@ -37,5 +37,10 @@ build/
37
37
  # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
38
38
  .rvmrc
39
39
  *.jpeg
40
+ *.py
41
+ *.doc
42
+ *.bmp
43
+ uuPythonDemo2014.6.7/
44
+ .DS_Store
40
45
 
41
46
  # Created by .ignore support plugin (hsz.mobi)
@@ -15,6 +15,7 @@ Gem::Specification.new do |s|
15
15
  s.license = "MIT"
16
16
 
17
17
  s.executables << 'confirmation_code'
18
+ s.add_runtime_dependency 'activesupport', '~> 3.0', '>= 3.0.0'
18
19
  s.add_dependency 'httpclient', '~> 2.7'
19
20
  s.add_dependency 'awesome_print', '~> 1.6'
20
21
  end
data/damatu.paw ADDED
@@ -0,0 +1,475 @@
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE database SYSTEM "file:///System/Library/DTDs/CoreData.dtd">
3
+
4
+ <database>
5
+ <databaseInfo>
6
+ <version>134481920</version>
7
+ <UUID>0F034DAC-7079-4606-B391-4EAA2D184C72</UUID>
8
+ <nextObjectID>204</nextObjectID>
9
+ <metadata>
10
+ <plist version="1.0">
11
+ <dict>
12
+ <key>NSPersistenceFrameworkVersion</key>
13
+ <integer>641</integer>
14
+ <key>NSStoreModelVersionHashes</key>
15
+ <dict>
16
+ <key>LMCookieJar</key>
17
+ <data>
18
+ Fttmf2L4PrGvKUF496+nqgVVGek45TjOe7sUMtjNg8I=
19
+ </data>
20
+ <key>LMEnvironment</key>
21
+ <data>
22
+ uzBoVFcO4YvR9/3ej4AJ1UOOsA/u5DKY2aemusoIseU=
23
+ </data>
24
+ <key>LMEnvironmentDomain</key>
25
+ <data>
26
+ yM1GPGHdquS8IWLtuczlNoqKhIhD9FW6IReSfFffJgs=
27
+ </data>
28
+ <key>LMEnvironmentVariable</key>
29
+ <data>
30
+ P8e0lYd5JZKRabS/eXVSOJ4oitilz67xtv+pLqW1Jqg=
31
+ </data>
32
+ <key>LMEnvironmentVariableValue</key>
33
+ <data>
34
+ my5hNPJ51oDCSa8EgdNxWAnRcDLcERUGjtuXnzhSxQ0=
35
+ </data>
36
+ <key>LMKeyValue</key>
37
+ <data>
38
+ bIXXbyYF2xAv2MXg8JTVFsslmMKuvsfnR86QdUcFkdM=
39
+ </data>
40
+ <key>LMRequest</key>
41
+ <data>
42
+ vcehD1+Y0zJEqCmgqlTWLscXXTAat5YQbsUJSVqwTq0=
43
+ </data>
44
+ <key>LMRequestGroup</key>
45
+ <data>
46
+ MnZKiG/nHZ2bvbULv2vfzH+0tXd5w+NuuMPlNJjBAMw=
47
+ </data>
48
+ <key>LMRequestTreeItem</key>
49
+ <data>
50
+ Ae5GlAcsXxZOGKCPQgemYbXQ3+KUtHlsprrqBD+V81o=
51
+ </data>
52
+ </dict>
53
+ <key>NSStoreModelVersionHashesVersion</key>
54
+ <integer>3</integer>
55
+ <key>NSStoreModelVersionIdentifiers</key>
56
+ <array>
57
+ <string>LMDocumentVersion4</string>
58
+ </array>
59
+ </dict>
60
+ </plist>
61
+ </metadata>
62
+ </databaseInfo>
63
+ <object type="LMCOOKIEJAR" id="z104">
64
+ <attribute name="uuid" type="string">CB95B396-6876-494E-A6CD-5676BE7F0DD1</attribute>
65
+ <attribute name="order" type="int64">1</attribute>
66
+ <attribute name="name" type="string">Default Jar</attribute>
67
+ </object>
68
+ <object type="LMKEYVALUE" id="z105">
69
+ <attribute name="value" type="string"></attribute>
70
+ <attribute name="order" type="int64">0</attribute>
71
+ <attribute name="name" type="string"></attribute>
72
+ <attribute name="enabled" type="bool">1</attribute>
73
+ <relationship name="groupforbodyparameters" type="0/1" destination="LMREQUESTGROUP"></relationship>
74
+ <relationship name="groupforheaders" type="0/1" destination="LMREQUESTGROUP"></relationship>
75
+ <relationship name="groupforurlparameters" type="0/1" destination="LMREQUESTGROUP"></relationship>
76
+ <relationship name="request" type="0/1" destination="LMREQUEST" idrefs="z107"></relationship>
77
+ </object>
78
+ <object type="LMREQUEST" id="z107">
79
+ <attribute name="body" type="string">[{"data":{"json":"{\\"user\\":\\"[{\\\\\\"data\\\\\\":{\\\\\\"environmentVariable\\\\\\":\\\\\\"295648E5-FC22-4DA5-BDBF-F1CC230CB8A0\\\\\\"},\\\\\\"identifier\\\\\\":\\\\\\"com.luckymarmot.EnvironmentVariableDynamicValue\\\\\\"}]\\",\\"pwd\\":\\"[{\\\\\\"data\\\\\\":{\\\\\\"environmentVariable\\\\\\":\\\\\\"CC6DE0A1-EC21-4D3F-AA1B-4C06006E4B45\\\\\\"},\\\\\\"identifier\\\\\\":\\\\\\"com.luckymarmot.EnvironmentVariableDynamicValue\\\\\\"}]\\",\\"appID\\":\\"[{\\\\\\"data\\\\\\":{\\\\\\"environmentVariable\\\\\\":\\\\\\"CE62BA1B-77E4-4ED0-B603-EFC8D7C20CB3\\\\\\"},\\\\\\"identifier\\\\\\":\\\\\\"com.luckymarmot.EnvironmentVariableDynamicValue\\\\\\"}]\\",\\"sign\\":\\"b3606170\\"}"},"identifier":"com.luckymarmot.JSONDynamicValue"}]</attribute>
80
+ <attribute name="uuid" type="string">85452E27-2D8D-4851-BCBB-27B7E096910C</attribute>
81
+ <attribute name="url" type="string">[{"data":{"environmentVariable":"FBBFC2D5-CB61-419A-8CB5-EB3ED5A91547"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},"\\/app\\/d2Balance?appID=",{"data":{"environmentVariable":"CE62BA1B-77E4-4ED0-B603-EFC8D7C20CB3"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},"\u2600pwd=",{"data":{"environmentVariable":"CC6DE0A1-EC21-4D3F-AA1B-4C06006E4B45"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},"\u2600user=",{"data":{"environmentVariable":"295648E5-FC22-4DA5-BDBF-F1CC230CB8A0"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},"\u2600sign=",{"data":{"environmentVariable":"BBC5024E-958D-4DEF-A9EA-90F64D090A8D"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"}]</attribute>
82
+ <attribute name="storecookies" type="bool">1</attribute>
83
+ <attribute name="sendcookies" type="bool">1</attribute>
84
+ <attribute name="redirectmethod" type="bool">0</attribute>
85
+ <attribute name="redirectauthorization" type="bool">0</attribute>
86
+ <attribute name="method" type="string">GET</attribute>
87
+ <attribute name="followredirects" type="bool">0</attribute>
88
+ <attribute name="order" type="int64">0</attribute>
89
+ <attribute name="name" type="string">查询余额</attribute>
90
+ <relationship name="parent" type="0/1" destination="LMREQUESTTREEITEM" idrefs="z111"></relationship>
91
+ <relationship name="children" type="0/0" destination="LMREQUESTTREEITEM"></relationship>
92
+ <relationship name="headers" type="0/0" destination="LMKEYVALUE" idrefs="z105"></relationship>
93
+ </object>
94
+ <object type="LMREQUESTGROUP" id="z111">
95
+ <attribute name="uuid" type="string">690E4168-7AA7-4EA5-975C-009572E87965</attribute>
96
+ <attribute name="order" type="int64">0</attribute>
97
+ <attribute name="name" type="string">打码兔</attribute>
98
+ <relationship name="parent" type="0/1" destination="LMREQUESTTREEITEM"></relationship>
99
+ <relationship name="children" type="0/0" destination="LMREQUESTTREEITEM" idrefs="z172 z107 z112 z178"></relationship>
100
+ <relationship name="bodyparameters" type="0/0" destination="LMKEYVALUE"></relationship>
101
+ <relationship name="headers" type="0/0" destination="LMKEYVALUE"></relationship>
102
+ <relationship name="urlparameters" type="0/0" destination="LMKEYVALUE"></relationship>
103
+ </object>
104
+ <object type="LMREQUEST" id="z112">
105
+ <attribute name="uuid" type="string">D920AAAA-8410-442D-853A-14A0B421DFE1</attribute>
106
+ <attribute name="url" type="string">[{"data":{"environmentVariable":"3F0E126E-80EB-42FC-948F-9BB3056D1789"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},{"data":{"environmentVariable":"FBBFC2D5-CB61-419A-8CB5-EB3ED5A91547"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},"\\/app\\/d2Url?appID=",{"data":{"environmentVariable":"CE62BA1B-77E4-4ED0-B603-EFC8D7C20CB3"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},"\u2600pwd=",{"data":{"environmentVariable":"CC6DE0A1-EC21-4D3F-AA1B-4C06006E4B45"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},"\u2600user=",{"data":{"environmentVariable":"295648E5-FC22-4DA5-BDBF-F1CC230CB8A0"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},"\u2600sign=",{"data":{"environmentVariable":"3777C087-9325-40C3-AD9A-44291FAC0958"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},"\u2600url=",{"data":{"environmentVariable":"D44B9442-5950-420A-8EB5-011C75F740D5"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},"\u2600type=200"]</attribute>
107
+ <attribute name="storecookies" type="bool">1</attribute>
108
+ <attribute name="sendcookies" type="bool">1</attribute>
109
+ <attribute name="redirectmethod" type="bool">0</attribute>
110
+ <attribute name="redirectauthorization" type="bool">0</attribute>
111
+ <attribute name="method" type="string">POST</attribute>
112
+ <attribute name="followredirects" type="bool">0</attribute>
113
+ <attribute name="body" type="string">[{"data":{"keyValues":[]},"identifier":"com.luckymarmot.BodyMultipartFormDataDynamicValue"}]</attribute>
114
+ <attribute name="order" type="int64">1</attribute>
115
+ <attribute name="name" type="string">上传图片url</attribute>
116
+ <relationship name="parent" type="0/1" destination="LMREQUESTTREEITEM" idrefs="z111"></relationship>
117
+ <relationship name="children" type="0/0" destination="LMREQUESTTREEITEM"></relationship>
118
+ <relationship name="headers" type="0/0" destination="LMKEYVALUE" idrefs="z113"></relationship>
119
+ </object>
120
+ <object type="LMKEYVALUE" id="z113">
121
+ <attribute name="value" type="string"></attribute>
122
+ <attribute name="order" type="int64">0</attribute>
123
+ <attribute name="name" type="string"></attribute>
124
+ <attribute name="enabled" type="bool">1</attribute>
125
+ <relationship name="groupforbodyparameters" type="0/1" destination="LMREQUESTGROUP"></relationship>
126
+ <relationship name="groupforheaders" type="0/1" destination="LMREQUESTGROUP"></relationship>
127
+ <relationship name="groupforurlparameters" type="0/1" destination="LMREQUESTGROUP"></relationship>
128
+ <relationship name="request" type="0/1" destination="LMREQUEST" idrefs="z112"></relationship>
129
+ </object>
130
+ <object type="LMENVIRONMENTDOMAIN" id="z139">
131
+ <attribute name="uuid" type="string">ACB78D83-97A5-4C0E-9ACF-5DFF85A36491</attribute>
132
+ <attribute name="order" type="int64">0</attribute>
133
+ <attribute name="name" type="string">打码兔</attribute>
134
+ <relationship name="environments" type="0/0" destination="LMENVIRONMENT" idrefs="z140"></relationship>
135
+ <relationship name="variables" type="0/0" destination="LMENVIRONMENTVARIABLE" idrefs="z144 z147 z149 z160 z141"></relationship>
136
+ </object>
137
+ <object type="LMENVIRONMENT" id="z140">
138
+ <attribute name="uuid" type="string">4DA5043C-87C9-47F9-A410-9AB64EFDDA6E</attribute>
139
+ <attribute name="order" type="int64">0</attribute>
140
+ <attribute name="name" type="string">Default Environment</attribute>
141
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z139"></relationship>
142
+ <relationship name="variablesvalues" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z151 z159 z153 z142 z146"></relationship>
143
+ </object>
144
+ <object type="LMENVIRONMENTVARIABLE" id="z141">
145
+ <attribute name="uuid" type="string">FBBFC2D5-CB61-419A-8CB5-EB3ED5A91547</attribute>
146
+ <attribute name="order" type="int64">0</attribute>
147
+ <attribute name="name" type="string">host</attribute>
148
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z139"></relationship>
149
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z142"></relationship>
150
+ </object>
151
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z142">
152
+ <attribute name="value" type="string">http://api.dama2.com:7766</attribute>
153
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z140"></relationship>
154
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z141"></relationship>
155
+ </object>
156
+ <object type="LMENVIRONMENTVARIABLE" id="z143">
157
+ <attribute name="uuid" type="string">14CD7C53-4EEA-4A91-997D-94C8AC30867B</attribute>
158
+ <attribute name="order" type="int64">0</attribute>
159
+ <attribute name="name" type="string">md5_password</attribute>
160
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z145"></relationship>
161
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z150"></relationship>
162
+ </object>
163
+ <object type="LMENVIRONMENTVARIABLE" id="z144">
164
+ <attribute name="uuid" type="string">295648E5-FC22-4DA5-BDBF-F1CC230CB8A0</attribute>
165
+ <attribute name="order" type="int64">1</attribute>
166
+ <attribute name="name" type="string">user</attribute>
167
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z139"></relationship>
168
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z153"></relationship>
169
+ </object>
170
+ <object type="LMENVIRONMENTDOMAIN" id="z145">
171
+ <attribute name="uuid" type="string">760CC47F-5C07-409F-B265-91740991C3A2</attribute>
172
+ <attribute name="order" type="int64">1</attribute>
173
+ <attribute name="name" type="string">打码兔加密</attribute>
174
+ <relationship name="environments" type="0/0" destination="LMENVIRONMENT" idrefs="z154"></relationship>
175
+ <relationship name="variables" type="0/0" destination="LMENVIRONMENTVARIABLE" idrefs="z175 z169 z197 z152 z143 z157 z158 z163 z179 z181 z199 z162"></relationship>
176
+ </object>
177
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z146">
178
+ <attribute name="value" type="string">lsm123</attribute>
179
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z140"></relationship>
180
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z147"></relationship>
181
+ </object>
182
+ <object type="LMENVIRONMENTVARIABLE" id="z147">
183
+ <attribute name="uuid" type="string">A9F3BF08-0D68-41FF-9EEE-B30C5B42C2BB</attribute>
184
+ <attribute name="order" type="int64">2</attribute>
185
+ <attribute name="name" type="string">password</attribute>
186
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z139"></relationship>
187
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z146"></relationship>
188
+ </object>
189
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z148">
190
+ <attribute name="value" type="string">[{"data":{"encoding":"Hexadecimal","hashType":2,"input":[{"data":{"environmentVariable":"295648E5-FC22-4DA5-BDBF-F1CC230CB8A0"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"}],"uppercase":0},"identifier":"com.luckymarmot.HashDynamicValue"}]</attribute>
191
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z154"></relationship>
192
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z152"></relationship>
193
+ </object>
194
+ <object type="LMENVIRONMENTVARIABLE" id="z149">
195
+ <attribute name="uuid" type="string">70D58A8C-0AC5-4ED2-B141-DB478F44348A</attribute>
196
+ <attribute name="order" type="int64">3</attribute>
197
+ <attribute name="name" type="string">app_key</attribute>
198
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z139"></relationship>
199
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z151"></relationship>
200
+ </object>
201
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z150">
202
+ <attribute name="value" type="string">[{"data":{"encoding":"Hexadecimal","hashType":2,"input":[{"data":{"environmentVariable":"A9F3BF08-0D68-41FF-9EEE-B30C5B42C2BB"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"}],"uppercase":0},"identifier":"com.luckymarmot.HashDynamicValue"}]</attribute>
203
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z154"></relationship>
204
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z143"></relationship>
205
+ </object>
206
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z151">
207
+ <attribute name="value" type="string">0f80784a5ff20d38df3977e461e3d82a</attribute>
208
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z140"></relationship>
209
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z149"></relationship>
210
+ </object>
211
+ <object type="LMENVIRONMENTVARIABLE" id="z152">
212
+ <attribute name="uuid" type="string">608F3431-FB19-48FC-AE15-996C7D44C3AB</attribute>
213
+ <attribute name="order" type="int64">1</attribute>
214
+ <attribute name="name" type="string">md5_user</attribute>
215
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z145"></relationship>
216
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z148"></relationship>
217
+ </object>
218
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z153">
219
+ <attribute name="value" type="string">seaify</attribute>
220
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z140"></relationship>
221
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z144"></relationship>
222
+ </object>
223
+ <object type="LMENVIRONMENT" id="z154">
224
+ <attribute name="uuid" type="string">B64D464F-9D2D-4014-8599-475C5D78DA4C</attribute>
225
+ <attribute name="order" type="int64">0</attribute>
226
+ <attribute name="name" type="string">Default Environment</attribute>
227
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z145"></relationship>
228
+ <relationship name="variablesvalues" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z176 z164 z182 z148 z150 z180 z198 z170 z155 z161 z156 z200"></relationship>
229
+ </object>
230
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z155">
231
+ <attribute name="value" type="string">[{"data":{"encoding":"Hexadecimal","hashType":2,"input":[{"data":{"environmentVariable":"70D58A8C-0AC5-4ED2-B141-DB478F44348A"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},{"data":{"environmentVariable":"B5458D8D-FB9B-41E6-B0C2-B483B7972D7B"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"}],"uppercase":0},"identifier":"com.luckymarmot.HashDynamicValue"}]</attribute>
232
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z154"></relationship>
233
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z157"></relationship>
234
+ </object>
235
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z156">
236
+ <attribute name="value" type="string">[{"data":{"environmentVariable":"608F3431-FB19-48FC-AE15-996C7D44C3AB"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},{"data":{"environmentVariable":"14CD7C53-4EEA-4A91-997D-94C8AC30867B"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"}]</attribute>
237
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z154"></relationship>
238
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z158"></relationship>
239
+ </object>
240
+ <object type="LMENVIRONMENTVARIABLE" id="z157">
241
+ <attribute name="uuid" type="string">CC6DE0A1-EC21-4D3F-AA1B-4C06006E4B45</attribute>
242
+ <attribute name="order" type="int64">2</attribute>
243
+ <attribute name="name" type="string">encrypet_password</attribute>
244
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z145"></relationship>
245
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z155"></relationship>
246
+ </object>
247
+ <object type="LMENVIRONMENTVARIABLE" id="z158">
248
+ <attribute name="uuid" type="string">C4DE684D-62FA-4F1B-99BA-6710468A4B2D</attribute>
249
+ <attribute name="order" type="int64">3</attribute>
250
+ <attribute name="name" type="string">user_password</attribute>
251
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z145"></relationship>
252
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z156"></relationship>
253
+ </object>
254
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z159">
255
+ <attribute name="value" type="string">41635</attribute>
256
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z140"></relationship>
257
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z160"></relationship>
258
+ </object>
259
+ <object type="LMENVIRONMENTVARIABLE" id="z160">
260
+ <attribute name="uuid" type="string">CE62BA1B-77E4-4ED0-B603-EFC8D7C20CB3</attribute>
261
+ <attribute name="order" type="int64">4</attribute>
262
+ <attribute name="name" type="string">app_id</attribute>
263
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z139"></relationship>
264
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z159"></relationship>
265
+ </object>
266
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z161">
267
+ <attribute name="value" type="string">[{"data":{"encoding":"Hexadecimal","hashType":2,"input":[{"data":{"environmentVariable":"C4DE684D-62FA-4F1B-99BA-6710468A4B2D"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"}],"uppercase":0},"identifier":"com.luckymarmot.HashDynamicValue"}]</attribute>
268
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z154"></relationship>
269
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z162"></relationship>
270
+ </object>
271
+ <object type="LMENVIRONMENTVARIABLE" id="z162">
272
+ <attribute name="uuid" type="string">B5458D8D-FB9B-41E6-B0C2-B483B7972D7B</attribute>
273
+ <attribute name="order" type="int64">4</attribute>
274
+ <attribute name="name" type="string">md5_user_password</attribute>
275
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z145"></relationship>
276
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z161"></relationship>
277
+ </object>
278
+ <object type="LMENVIRONMENTVARIABLE" id="z163">
279
+ <attribute name="uuid" type="string">BBC5024E-958D-4DEF-A9EA-90F64D090A8D</attribute>
280
+ <attribute name="order" type="int64">5</attribute>
281
+ <attribute name="name" type="string">balance_sign</attribute>
282
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z145"></relationship>
283
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z164"></relationship>
284
+ </object>
285
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z164">
286
+ <attribute name="value" type="string">[{"data":{"name":"slice","input":"[{\\"data\\":{\\"algorithm_name\\":\\"md5_bytes\\",\\"input\\":\\"[{\\\\\\"data\\\\\\":{\\\\\\"environmentVariable\\\\\\":\\\\\\"79085216-8474-42FD-B224-959C2BB34E84\\\\\\"},\\\\\\"identifier\\\\\\":\\\\\\"com.luckymarmot.EnvironmentVariableDynamicValue\\\\\\"}]\\",\\"slice\\":\\"0,2\\"},\\"identifier\\":\\"com.seaify.algorithms\\"}]","slice":"0,8"},"identifier":"com.seaify.utils"}]</attribute>
287
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z154"></relationship>
288
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z163"></relationship>
289
+ </object>
290
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z165">
291
+ <attribute name="value" type="string">http://captcha.qq.com/getimage</attribute>
292
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z168"></relationship>
293
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z166"></relationship>
294
+ </object>
295
+ <object type="LMENVIRONMENTVARIABLE" id="z166">
296
+ <attribute name="uuid" type="string">C682DDFA-41C7-471A-BF2A-0D52C7BDBC94</attribute>
297
+ <attribute name="order" type="int64">0</attribute>
298
+ <attribute name="name" type="string">image_url</attribute>
299
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z167"></relationship>
300
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z165"></relationship>
301
+ </object>
302
+ <object type="LMENVIRONMENTDOMAIN" id="z167">
303
+ <attribute name="uuid" type="string">C7FDF687-E7D6-48C0-9BB4-12A661305A1A</attribute>
304
+ <attribute name="order" type="int64">2</attribute>
305
+ <attribute name="name" type="string">default</attribute>
306
+ <relationship name="environments" type="0/0" destination="LMENVIRONMENT" idrefs="z168"></relationship>
307
+ <relationship name="variables" type="0/0" destination="LMENVIRONMENTVARIABLE" idrefs="z201 z173 z203 z166"></relationship>
308
+ </object>
309
+ <object type="LMENVIRONMENT" id="z168">
310
+ <attribute name="uuid" type="string">B7BDE867-A008-41CF-9C01-EA8FAC1EB7C1</attribute>
311
+ <attribute name="order" type="int64">0</attribute>
312
+ <attribute name="name" type="string">Default Environment</attribute>
313
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z167"></relationship>
314
+ <relationship name="variablesvalues" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z174 z165 z204 z202"></relationship>
315
+ </object>
316
+ <object type="LMENVIRONMENTVARIABLE" id="z169">
317
+ <attribute name="uuid" type="string">3777C087-9325-40C3-AD9A-44291FAC0958</attribute>
318
+ <attribute name="order" type="int64">6</attribute>
319
+ <attribute name="name" type="string">post_sign</attribute>
320
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z145"></relationship>
321
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z170"></relationship>
322
+ </object>
323
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z170">
324
+ <attribute name="value" type="string">[{"data":{"name":"slice","input":"[{\\"data\\":{\\"algorithm_name\\":\\"md5_bytes\\",\\"input\\":\\"[{\\\\\\"data\\\\\\":{\\\\\\"environmentVariable\\\\\\":\\\\\\"79085216-8474-42FD-B224-959C2BB34E84\\\\\\"},\\\\\\"identifier\\\\\\":\\\\\\"com.luckymarmot.EnvironmentVariableDynamicValue\\\\\\"},\\\\\\",\\\\\\",{\\\\\\"data\\\\\\":{\\\\\\"algorithm_name\\\\\\":\\\\\\"bytes\\\\\\",\\\\\\"input\\\\\\":\\\\\\"[{\\\\\\\\\\\\\\"data\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\"environmentVariable\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"C682DDFA-41C7-471A-BF2A-0D52C7BDBC94\\\\\\\\\\\\\\"},\\\\\\\\\\\\\\"identifier\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"com.luckymarmot.EnvironmentVariableDynamicValue\\\\\\\\\\\\\\"}]\\\\\\"},\\\\\\"identifier\\\\\\":\\\\\\"com.seaify.algorithms\\\\\\"}]\\"},\\"identifier\\":\\"com.seaify.algorithms\\"}]","slice":"0,8"},"identifier":"com.seaify.utils"}]</attribute>
325
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z154"></relationship>
326
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z169"></relationship>
327
+ </object>
328
+ <object type="LMKEYVALUE" id="z171">
329
+ <attribute name="value" type="string"></attribute>
330
+ <attribute name="order" type="int64">0</attribute>
331
+ <attribute name="name" type="string"></attribute>
332
+ <attribute name="enabled" type="bool">1</attribute>
333
+ <relationship name="groupforbodyparameters" type="0/1" destination="LMREQUESTGROUP"></relationship>
334
+ <relationship name="groupforheaders" type="0/1" destination="LMREQUESTGROUP"></relationship>
335
+ <relationship name="groupforurlparameters" type="0/1" destination="LMREQUESTGROUP"></relationship>
336
+ <relationship name="request" type="0/1" destination="LMREQUEST" idrefs="z172"></relationship>
337
+ </object>
338
+ <object type="LMREQUEST" id="z172">
339
+ <attribute name="uuid" type="string">0BBE0478-FC09-4D0E-B775-F8172D8E5C83</attribute>
340
+ <attribute name="url" type="string">[{"data":{"environmentVariable":"3F0E126E-80EB-42FC-948F-9BB3056D1789"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},{"data":{"environmentVariable":"FBBFC2D5-CB61-419A-8CB5-EB3ED5A91547"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},"\\/app\\/d2File?appID=",{"data":{"environmentVariable":"CE62BA1B-77E4-4ED0-B603-EFC8D7C20CB3"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},"\u2600pwd=",{"data":{"environmentVariable":"CC6DE0A1-EC21-4D3F-AA1B-4C06006E4B45"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},"\u2600user=",{"data":{"environmentVariable":"295648E5-FC22-4DA5-BDBF-F1CC230CB8A0"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},"\u2600sign=",{"data":{"environmentVariable":"E5DB6E5E-AEA1-4EC5-8E65-CE93C3830923"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},"\u2600type=200"]</attribute>
341
+ <attribute name="storecookies" type="bool">1</attribute>
342
+ <attribute name="sendcookies" type="bool">1</attribute>
343
+ <attribute name="redirectmethod" type="bool">0</attribute>
344
+ <attribute name="redirectauthorization" type="bool">0</attribute>
345
+ <attribute name="method" type="string">POST</attribute>
346
+ <attribute name="followredirects" type="bool">0</attribute>
347
+ <attribute name="body" type="string">[{"data":{"keyValues":[[["file"],[{"data":{"environmentVariable":"EAA39355-4AEE-4E2E-A045-F581429182EC"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"}],true]]},"identifier":"com.luckymarmot.BodyMultipartFormDataDynamicValue"}]</attribute>
348
+ <attribute name="order" type="int64">2</attribute>
349
+ <attribute name="name" type="string">上传本地图片</attribute>
350
+ <relationship name="parent" type="0/1" destination="LMREQUESTTREEITEM" idrefs="z111"></relationship>
351
+ <relationship name="children" type="0/0" destination="LMREQUESTTREEITEM"></relationship>
352
+ <relationship name="headers" type="0/0" destination="LMKEYVALUE" idrefs="z171"></relationship>
353
+ </object>
354
+ <object type="LMENVIRONMENTVARIABLE" id="z173">
355
+ <attribute name="uuid" type="string">EAA39355-4AEE-4E2E-A045-F581429182EC</attribute>
356
+ <attribute name="order" type="int64">1</attribute>
357
+ <attribute name="name" type="string">local_image</attribute>
358
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z167"></relationship>
359
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z174"></relationship>
360
+ </object>
361
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z174">
362
+ <attribute name="value" type="string">[{"data":{"bookmarkData":"Ym9vawwDAAAAAAQQMAAAADd0PQYQdOxQtgbG0fvrhs8X8AieUr+fzZ4+Vj\\/7j2o\\/CAIAAAQAAAADAwAAABgAKAUAAAABAQAAVXNlcnMAAAAFAAAAAQEAAGNodWNrAAAABgAAAAEBAABzZWFpZnkAAAQAAAABAQAAbWluZREAAAABAQAAY29uZmlybWF0aW9uX2NvZGUAAAAIAAAAAQEAADAzNDkuYm1wGAAAAAEGAAAQAAAAIAAAADAAAABAAAAATAAAAGgAAAAIAAAABAMAADAHEgAAAAAACAAAAAQDAABBBxIAAAAAAAgAAAAEAwAAJuMaAAAAAAAIAAAABAMAAC30HgAAAAAACAAAAAQDAAAPInIAAAAAAAgAAAAEAwAAjtG0AAAAAAAYAAAAAQYAAJgAAACoAAAAuAAAAMgAAADYAAAA6AAAAAgAAAAABAAAQboHMHYAAAAYAAAAAQIAAAEAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAgAAAAEAwAABAAAAAAAAAAEAAAAAwMAAPUBAAAIAAAAAQkAAGZpbGU6Ly8vDAAAAAEBAABNYWNpbnRvc2ggSEQIAAAABAMAAAAgiD06AAAACAAAAAAEAABBut2ozAAAACQAAAABAQAARTRDNjRCM0ItRjM0Ni0zNTE1LTlDODItQjQ3QzUxRjAwRUUwGAAAAAECAACBAAAAAQAAAO8TAAABAAAAAAAAAAAAAAABAAAAAQEAAC8AAAAAAAAAAQUAAMwAAAD+\\/\\/\\/\\/AQAAAAAAAAAQAAAABBAAAHgAAAAAAAAABRAAAPgAAAAAAAAAEBAAACgBAAAAAAAAQBAAABgBAAAAAAAAAiAAAPQBAAAAAAAABSAAAGQBAAAAAAAAECAAAHQBAAAAAAAAESAAAKgBAAAAAAAAEiAAAIgBAAAAAAAAEyAAAJgBAAAAAAAAICAAANQBAAAAAAAAMCAAAAACAAAAAAAAAcAAAEgBAAAAAAAAEcAAACAAAAAAAAAAEsAAAFgBAAAAAAAAENAAAAQAAAAAAAAA"},"identifier":"com.luckymarmot.FileContentDynamicValue"}]</attribute>
363
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z168"></relationship>
364
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z173"></relationship>
365
+ </object>
366
+ <object type="LMENVIRONMENTVARIABLE" id="z175">
367
+ <attribute name="uuid" type="string">E5DB6E5E-AEA1-4EC5-8E65-CE93C3830923</attribute>
368
+ <attribute name="order" type="int64">7</attribute>
369
+ <attribute name="name" type="string">local_image_sign</attribute>
370
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z145"></relationship>
371
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z176"></relationship>
372
+ </object>
373
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z176">
374
+ <attribute name="value" type="string">a63b2cb2</attribute>
375
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z154"></relationship>
376
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z175"></relationship>
377
+ </object>
378
+ <object type="LMKEYVALUE" id="z177">
379
+ <attribute name="value" type="string"></attribute>
380
+ <attribute name="order" type="int64">0</attribute>
381
+ <attribute name="name" type="string"></attribute>
382
+ <attribute name="enabled" type="bool">1</attribute>
383
+ <relationship name="groupforbodyparameters" type="0/1" destination="LMREQUESTGROUP"></relationship>
384
+ <relationship name="groupforheaders" type="0/1" destination="LMREQUESTGROUP"></relationship>
385
+ <relationship name="groupforurlparameters" type="0/1" destination="LMREQUESTGROUP"></relationship>
386
+ <relationship name="request" type="0/1" destination="LMREQUEST" idrefs="z178"></relationship>
387
+ </object>
388
+ <object type="LMREQUEST" id="z178">
389
+ <attribute name="uuid" type="string">25BD1B1C-CB27-4258-BB89-D5F0B4E9C8EB</attribute>
390
+ <attribute name="url" type="string">[{"data":{"environmentVariable":"3F0E126E-80EB-42FC-948F-9BB3056D1789"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},{"data":{"environmentVariable":"FBBFC2D5-CB61-419A-8CB5-EB3ED5A91547"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},"\\/app\\/d2ReportError?appID=",{"data":{"environmentVariable":"CE62BA1B-77E4-4ED0-B603-EFC8D7C20CB3"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},"\u2600pwd=",{"data":{"environmentVariable":"CC6DE0A1-EC21-4D3F-AA1B-4C06006E4B45"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},"\u2600user=",{"data":{"environmentVariable":"295648E5-FC22-4DA5-BDBF-F1CC230CB8A0"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"},"\u2600sign=",{"data":{"name":"slice","input":"[{\\"data\\":{\\"algorithm_name\\":\\"md5_bytes\\",\\"input\\":\\"[{\\\\\\"data\\\\\\":{\\\\\\"environmentVariable\\\\\\":\\\\\\"79085216-8474-42FD-B224-959C2BB34E84\\\\\\"},\\\\\\"identifier\\\\\\":\\\\\\"com.luckymarmot.EnvironmentVariableDynamicValue\\\\\\"},\\\\\\",\\\\\\",{\\\\\\"data\\\\\\":{\\\\\\"algorithm_name\\\\\\":\\\\\\"bytes\\\\\\",\\\\\\"input\\\\\\":\\\\\\"[{\\\\\\\\\\\\\\"data\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\"param\\\\\\\\\\\\\\":[\\\\\\\\\\\\\\"id\\\\\\\\\\\\\\"]},\\\\\\\\\\\\\\"identifier\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"com.luckymarmot.RequestURLParamDynamicValue\\\\\\\\\\\\\\"}]\\\\\\"},\\\\\\"identifier\\\\\\":\\\\\\"com.seaify.algorithms\\\\\\"}]\\"},\\"identifier\\":\\"com.seaify.algorithms\\"}]","slice":"0,8"},"identifier":"com.seaify.utils"},"\u2600id=",{"data":{"request":"D920AAAA-8410-442D-853A-14A0B421DFE1","keyPath":["id"],"format":1},"identifier":"com.luckymarmot.ResponseBodyPathDynamicValue"}]</attribute>
391
+ <attribute name="storecookies" type="bool">1</attribute>
392
+ <attribute name="sendcookies" type="bool">1</attribute>
393
+ <attribute name="redirectmethod" type="bool">0</attribute>
394
+ <attribute name="redirectauthorization" type="bool">0</attribute>
395
+ <attribute name="method" type="string">POST</attribute>
396
+ <attribute name="followredirects" type="bool">0</attribute>
397
+ <attribute name="order" type="int64">3</attribute>
398
+ <attribute name="name" type="string">报告验证码错误</attribute>
399
+ <relationship name="parent" type="0/1" destination="LMREQUESTTREEITEM" idrefs="z111"></relationship>
400
+ <relationship name="children" type="0/0" destination="LMREQUESTTREEITEM"></relationship>
401
+ <relationship name="headers" type="0/0" destination="LMKEYVALUE" idrefs="z177"></relationship>
402
+ </object>
403
+ <object type="LMENVIRONMENTVARIABLE" id="z179">
404
+ <attribute name="uuid" type="string">A7EC29CE-ECD4-4238-9A9D-DAA9B7D9781E</attribute>
405
+ <attribute name="order" type="int64">8</attribute>
406
+ <attribute name="name" type="string">report_sign</attribute>
407
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z145"></relationship>
408
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z180"></relationship>
409
+ </object>
410
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z180">
411
+ <attribute name="value" type="string">4ae46be1</attribute>
412
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z154"></relationship>
413
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z179"></relationship>
414
+ </object>
415
+ <object type="LMENVIRONMENTVARIABLE" id="z181">
416
+ <attribute name="uuid" type="string">79085216-8474-42FD-B224-959C2BB34E84</attribute>
417
+ <attribute name="order" type="int64">9</attribute>
418
+ <attribute name="name" type="string">bytes_key_user</attribute>
419
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z145"></relationship>
420
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z182"></relationship>
421
+ </object>
422
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z182">
423
+ <attribute name="value" type="string">[{"data":{"algorithm_name":"bytes","input":"[{\\"data\\":{\\"environmentVariable\\":\\"70D58A8C-0AC5-4ED2-B141-DB478F44348A\\"},\\"identifier\\":\\"com.luckymarmot.EnvironmentVariableDynamicValue\\"}]"},"identifier":"com.seaify.algorithms"},",",{"data":{"algorithm_name":"bytes","input":"[{\\"data\\":{\\"environmentVariable\\":\\"295648E5-FC22-4DA5-BDBF-F1CC230CB8A0\\"},\\"identifier\\":\\"com.luckymarmot.EnvironmentVariableDynamicValue\\"}]"},"identifier":"com.seaify.algorithms"}]</attribute>
424
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z154"></relationship>
425
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z181"></relationship>
426
+ </object>
427
+ <object type="LMENVIRONMENTVARIABLE" id="z197">
428
+ <attribute name="uuid" type="string">0A9FC8FF-CCEF-439F-AA50-88F52F7C8E15</attribute>
429
+ <attribute name="order" type="int64">10</attribute>
430
+ <attribute name="name" type="string">post_sign1</attribute>
431
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z145"></relationship>
432
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z198"></relationship>
433
+ </object>
434
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z198">
435
+ <attribute name="value" type="string">[{"data":{"name":"slice","input":"[{\\"data\\":{\\"algorithm_name\\":\\"md5_bytes\\",\\"input\\":\\"[{\\\\\\"data\\\\\\":{\\\\\\"environmentVariable\\\\\\":\\\\\\"79085216-8474-42FD-B224-959C2BB34E84\\\\\\"},\\\\\\"identifier\\\\\\":\\\\\\"com.luckymarmot.EnvironmentVariableDynamicValue\\\\\\"},\\\\\\",\\\\\\",{\\\\\\"data\\\\\\":{\\\\\\"algorithm_name\\\\\\":\\\\\\"bytes\\\\\\",\\\\\\"input\\\\\\":\\\\\\"[{\\\\\\\\\\\\\\"data\\\\\\\\\\\\\\":{\\\\\\\\\\\\\\"param\\\\\\\\\\\\\\":[\\\\\\\\\\\\\\"ffe\\\\\\\\\\\\\\"]},\\\\\\\\\\\\\\"identifier\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"com.luckymarmot.RequestURLParamDynamicValue\\\\\\\\\\\\\\"}]\\\\\\"},\\\\\\"identifier\\\\\\":\\\\\\"com.seaify.algorithms\\\\\\"}]\\"},\\"identifier\\":\\"com.seaify.algorithms\\"}]","slice":"0,8"},"identifier":"com.seaify.utils"}]</attribute>
436
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z154"></relationship>
437
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z197"></relationship>
438
+ </object>
439
+ <object type="LMENVIRONMENTVARIABLE" id="z199">
440
+ <attribute name="uuid" type="string">1E2303CE-321C-4346-A163-86F0E30C6991</attribute>
441
+ <attribute name="order" type="int64">11</attribute>
442
+ <attribute name="name" type="string"></attribute>
443
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z145"></relationship>
444
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z200"></relationship>
445
+ </object>
446
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z200">
447
+ <attribute name="value" type="string"></attribute>
448
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z154"></relationship>
449
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z199"></relationship>
450
+ </object>
451
+ <object type="LMENVIRONMENTVARIABLE" id="z201">
452
+ <attribute name="uuid" type="string">D44B9442-5950-420A-8EB5-011C75F740D5</attribute>
453
+ <attribute name="order" type="int64">2</attribute>
454
+ <attribute name="name" type="string">encode_image_url</attribute>
455
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z167"></relationship>
456
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z202"></relationship>
457
+ </object>
458
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z202">
459
+ <attribute name="value" type="string">[{"data":{"input":[{"data":{"environmentVariable":"C682DDFA-41C7-471A-BF2A-0D52C7BDBC94"},"identifier":"com.luckymarmot.EnvironmentVariableDynamicValue"}],"mode":0,"charset":"utf-8"},"identifier":"com.luckymarmot.URLEncodingDynamicValue"}]</attribute>
460
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z168"></relationship>
461
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z201"></relationship>
462
+ </object>
463
+ <object type="LMENVIRONMENTVARIABLE" id="z203">
464
+ <attribute name="uuid" type="string">6FC18201-0A18-481A-8614-7311B605ED10</attribute>
465
+ <attribute name="order" type="int64">3</attribute>
466
+ <attribute name="name" type="string"></attribute>
467
+ <relationship name="domain" type="0/1" destination="LMENVIRONMENTDOMAIN" idrefs="z167"></relationship>
468
+ <relationship name="values" type="0/0" destination="LMENVIRONMENTVARIABLEVALUE" idrefs="z204"></relationship>
469
+ </object>
470
+ <object type="LMENVIRONMENTVARIABLEVALUE" id="z204">
471
+ <attribute name="value" type="string"></attribute>
472
+ <relationship name="environment" type="1/1" destination="LMENVIRONMENT" idrefs="z168"></relationship>
473
+ <relationship name="variable" type="1/1" destination="LMENVIRONMENTVARIABLE" idrefs="z203"></relationship>
474
+ </object>
475
+ </database>
@@ -0,0 +1,99 @@
1
+ require 'awesome_print'
2
+ require 'open-uri'
3
+ require 'httpclient'
4
+ require 'json'
5
+ require 'digest/md5'
6
+ require 'active_support/core_ext/hash'
7
+
8
+ module ConfirmationCode
9
+ module Service
10
+ module Damatu
11
+
12
+ extend self
13
+ include ConfirmationCode
14
+
15
+ HOST = 'http://api.dama2.com:7766'
16
+
17
+ UPLOAD_URL = File.join(HOST, 'app/d2Url?')
18
+ ACCOUNT_URL = File.join(HOST, 'app/d2Balance?')
19
+ RECOGNITION_ERROR_URL = File.join(HOST, 'app/d2ReportError?')
20
+
21
+ attr_reader :app_key, :app_id
22
+ @app_id = '41635'
23
+ @app_key = '0f80784a5ff20d38df3977e461e3d82a'
24
+
25
+
26
+ def set_extra_options(options)
27
+ @app_key = options[:app_key]
28
+ @app_id = options[:app_id]
29
+ end
30
+
31
+ def set_app_key(app_key)
32
+ @app_key = app_key
33
+ end
34
+
35
+ def client
36
+ @client ||= HTTPClient.new
37
+ end
38
+
39
+ def md5(value)
40
+ return Digest::MD5.hexdigest(value)
41
+ end
42
+
43
+ def get_pwd(user, pwd)
44
+ ap md5(user)
45
+ ap md5(pwd)
46
+ ap md5(md5(user) + md5(pwd))
47
+ return md5(@app_key + md5(md5(user) + md5(pwd)))
48
+ end
49
+
50
+ def sign(user, param = [])
51
+ encode_str = (@app_key.bytes + user.bytes + param).pack('c*')
52
+ return md5(encode_str)[0..7]
53
+ end
54
+
55
+ def upload(image_url, options = {})
56
+ upload_options = damatu_options(options)
57
+ upload_options['url'] = CGI::escape(image_url)
58
+ upload_options['sign'] = sign(upload_options['user'], image_url.bytes)
59
+ upload_options['type'] = 200 if upload_options['type'].nil?
60
+ response = client.get(UPLOAD_URL, upload_options)
61
+ result(JSON.parse(response.body))
62
+ end
63
+
64
+ def account(options = {})
65
+ account_options = damatu_options(options)
66
+ account_options['sign'] = sign(account_options['user'])
67
+ response = client.get(ACCOUNT_URL, account_options)
68
+ result(JSON.parse(response.body))
69
+ end
70
+
71
+ def recognition_error(ret_id, options = {})
72
+ recognition_options = damatu_options(options)
73
+ recognition_options['id'] = ret_id.to_s
74
+ recognition_options['sign'] = sign(recognition_options['user'], ret_id.to_s.bytes)
75
+ ap recognition_options
76
+ response = client.post(RECOGNITION_ERROR_URL, recognition_options)
77
+ ap response.body
78
+ result(JSON.parse(response.body))
79
+ end
80
+
81
+ def damatu_options(options)
82
+ damatu_options = {}
83
+ damatu_options['appID'] = @app_id
84
+ damatu_options['user'] = options[:user_name]
85
+ damatu_options['pwd'] = get_pwd(options[:user_name], options[:user_pw])
86
+ damatu_options['type'] = options[:type] unless options[:type].nil?
87
+ return damatu_options
88
+ end
89
+
90
+ def result(body)
91
+ {
92
+ "success" => body['ret'] == 0,
93
+ "data" => body.except('ret', 'sign', 'cookie')
94
+ }
95
+ end
96
+ end
97
+
98
+ end
99
+ end
@@ -18,29 +18,36 @@ module ConfirmationCode
18
18
  @client ||= HTTPClient.new
19
19
  end
20
20
 
21
+ def set_extra_options(options)
22
+
23
+ end
24
+
21
25
  def upload(image_url, options = {})
22
26
  File.open("code.jpeg", "wb") do |f|
23
27
  f.write open(image_url).read
24
28
  end
25
- options = default_options.merge options
29
+ options = lianzhong_options.merge options
26
30
  File.open('code.jpeg') do |file|
27
31
  options['upload'] = file
28
32
  response = client.post(UPLOAD_URL, options)
29
- JSON.parse(response.body)
33
+ result(JSON.parse(response.body))
30
34
  end
31
35
  end
32
36
 
33
37
  def account(options = {})
38
+ options = lianzhong_options.merge options
39
+ print options
34
40
  response = client.post(ACCOUNT_URL, options)
35
- JSON.parse(response.body)
41
+ result(JSON.parse(response.body))
36
42
  end
37
43
 
38
- def recognition_error(options = {})
44
+ def recognition_error(ret_id, options = {})
45
+ options['yzm_id'] = ret_id
39
46
  response = client.post(RECOGNITION_ERROR_URL, options)
40
- JSON.parse(response.body)
47
+ result(JSON.parse(response.body))
41
48
  end
42
49
 
43
- def default_options
50
+ def lianzhong_options
44
51
  {
45
52
  yzm_minlen: '4',
46
53
  yzm_maxlen: '6',
@@ -48,6 +55,13 @@ module ConfirmationCode
48
55
  zztool_token: '',
49
56
  }
50
57
  end
58
+
59
+ def result(body)
60
+ {
61
+ "success" => body['result'],
62
+ "data" => body['data']
63
+ }
64
+ end
51
65
  end
52
66
 
53
67
  end
@@ -1,3 +1,3 @@
1
1
  module ConfirmationCode
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -9,8 +9,9 @@ module ConfirmationCode
9
9
 
10
10
  attr_reader :username, :password
11
11
 
12
- def use(service, username, password)
12
+ def use(service, username, password, options = {})
13
13
  @service = ConfirmationCode::Service.const_get("#{service.to_s.capitalize}")
14
+ @service.set_extra_options(options)
14
15
  @username = username
15
16
  @password = password
16
17
  @service
@@ -25,10 +26,8 @@ module ConfirmationCode
25
26
  @service.account default_options if @service
26
27
  end
27
28
 
28
- def recognition_error(yzm_id, options = {})
29
- options['yzm_id'] = yzm_id
30
- options = default_options.merge options
31
- @service.recognition_error options if @service
29
+ def recognition_error(yzm_id)
30
+ @service.recognition_error yzm_id, default_options if @service
32
31
  end
33
32
 
34
33
  private
@@ -37,7 +36,6 @@ module ConfirmationCode
37
36
  {
38
37
  user_name: @username,
39
38
  user_pw: @password,
40
- source: 'ruby',
41
39
  }
42
40
  end
43
41
 
data/readme.md ADDED
@@ -0,0 +1,54 @@
1
+ # ConfirmationCode 验证码平台 Ruby 接口
2
+
3
+ ## 支持以下打码平台
4
+
5
+ * [联众](https://www.jsdati.com/)
6
+ * [打码兔](http://www.dama2.com/)
7
+
8
+ 还尝试过云打码, uusee, 挣码等,但都有一些问题,所以没有接入.
9
+
10
+ 云打码: 使用样例,验证码类型设置为了1-6位,识别出来少了1位.
11
+ uusee: api样例代码太复杂
12
+ 挣码: 给的http接口样例,域名都失效了
13
+
14
+ 尝试过的所有验证码平台, 官方网站+api都给人很不专业的感觉, 比云片网差太多了, 所以建议不要充值太多, 觉得也许容易跑路.
15
+
16
+ ## 安装
17
+
18
+ 加入以下代码到 Gemfile:
19
+
20
+ gem 'confirmation_code'
21
+
22
+ 然后执行:
23
+
24
+ $ bundle
25
+
26
+ 或者直接安装:
27
+
28
+ $ gem install confirmation_code
29
+
30
+ ## 使用
31
+
32
+ 代码风格上参照了china_sms
33
+ ```ruby
34
+ # 支持 :lianzhong, :damatu 验证码接口
35
+ ConfirmationCode.use :lianzhong, 'seaify', '67c86225'
36
+ result = ConfirmationCode.upload('http://captcha.qq.com/getimage')
37
+
38
+ # 第一个参数验证码平台类型, 目前支持:lianzhong, :damatu, 第二个参数是用户名, 第三个参数是密码
39
+ ConfirmationCode.use :lianzhong, 'seaify', '67c86225'
40
+
41
+ # 上传图片url到打码平台
42
+ result = ConfirmationCode.upload('http://captcha.qq.com/getimage')
43
+
44
+ # 上传本地图片到打码平台
45
+ 稍后更新
46
+
47
+ # 报告验证码识别结果有误
48
+ ap ConfirmationCode.recognition_error result['data']['id']
49
+ ```
50
+
51
+ ## 注意
52
+ 示例中的用户名,密码是我的账号, 只充值了1块.
53
+
54
+ 另外打码平台, 有软件分成的概念, 目前damatu默认使用的软件是我的一个软件, 后面更新时, 会提供接口, 供指定软件.
data/run.rb CHANGED
@@ -3,10 +3,17 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  require 'confirmation_code'
5
5
 
6
+ #result = ConfirmationCode.upload 'https://passport.58.com/validatecode?temp=123i1knr04o'
7
+
6
8
  ConfirmationCode.use :lianzhong, 'seaify', '67c86225'
7
9
  ap ConfirmationCode.account
8
- result = ConfirmationCode.upload 'https://passport.58.com/validatecode?temp=123i1knr04o'
10
+ result = ConfirmationCode.upload('http://captcha.qq.com/getimage')
9
11
  ap result
10
12
  ap ConfirmationCode.recognition_error result['data']['id']
11
- ap ConfirmationCode.account
13
+ return
12
14
 
15
+ ConfirmationCode.use :damatu, 'seaify', 'lsm123', {app_key: '0f80784a5ff20d38df3977e461e3d82a', app_id: '41635'}
16
+ ap ConfirmationCode.account
17
+ result = ConfirmationCode.upload('http://captcha.qq.com/getimage')
18
+ ap result
19
+ ap ConfirmationCode.recognition_error result['data']['id']
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: confirmation_code
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - seaify
@@ -10,6 +10,26 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2016-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 3.0.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '3.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 3.0.0
13
33
  - !ruby/object:Gem::Dependency
14
34
  name: httpclient
15
35
  requirement: !ruby/object:Gem::Requirement
@@ -49,9 +69,12 @@ files:
49
69
  - api.py
50
70
  - bin/confirmation_code
51
71
  - confirmation_code.gemspec
72
+ - damatu.paw
52
73
  - lib/confirmation_code.rb
74
+ - lib/confirmation_code/service/damatu.rb
53
75
  - lib/confirmation_code/service/lianzhong.rb
54
76
  - lib/confirmation_code/version.rb
77
+ - readme.md
55
78
  - run.rb
56
79
  homepage: https://github.com/seaify/confirmation_code
57
80
  licenses: