zhou12189108 commited on
Commit
b0452e6
·
verified ·
1 Parent(s): 0d3cc7b

Update hcaptcha_solver.py

Browse files
Files changed (1) hide show
  1. hcaptcha_solver.py +36 -32
hcaptcha_solver.py CHANGED
@@ -155,38 +155,42 @@ async def classify_click(page, data, round0, examples):
155
 
156
 
157
  async def area_click(page, data, round0, examples):
158
- await page.wait_for_selector("//iframe[contains(@title, 'hCaptcha challenge')]")
159
- frame_challenge = page.frame_locator("//iframe[contains(@title, 'hCaptcha challenge')]")
160
- locator = frame_challenge.locator("//div[@class='challenge-view']//canvas")
161
- await locator.wait_for(state="visible")
162
- image = await locator.screenshot()
163
- if examples:
164
- clicks = nopecha.Recognition.solve(
165
- type='hcaptcha_area_select',
166
- task=data.get("requester_question").get("en"),
167
- image_data=[url_to_base64(data.get("tasklist")[0]["datapoint_uri"])],
168
- image_examples=examples
169
- )
170
- else:
171
- clicks = nopecha.Recognition.solve(
172
- type='hcaptcha_area_select',
173
- task=data.get("requester_question").get("en"),
174
- image_data=[url_to_base64(data.get("tasklist")[0]["datapoint_uri"])]
175
- )
176
- print(clicks)
177
- print(clicks["x"], clicks["y"])
178
- print("try to click")
179
- bounds = await locator.bounding_box()
180
- print(bounds)
181
- await locator.click(delay=200, position={"x": int(bounds["width"] * clicks["x"] / 100),
182
- "y": int(bounds["height"] * clicks["y"] / 100)})
183
- print("done")
184
-
185
- fl = frame_challenge.locator("//div[@class='button-submit button']")
186
- await fl.click()
187
- await asyncio.sleep(random.uniform(0.1, 0.3))
188
- if round0 == 0:
189
- await area_click(page, data, 1, examples)
 
 
 
 
190
 
191
 
192
  async def hit_challenge(context: ASyncContext, host, sitekey, times: int = 8):
 
155
 
156
 
157
  async def area_click(page, data, round0, examples):
158
+ try:
159
+ await page.wait_for_selector("//iframe[contains(@title, 'hCaptcha challenge')]")
160
+ frame_challenge = page.frame_locator("//iframe[contains(@title, 'hCaptcha challenge')]")
161
+ locator = frame_challenge.locator("//div[@class='challenge-view']//canvas")
162
+ await locator.wait_for(state="visible")
163
+ image = await locator.screenshot()
164
+ if examples:
165
+ clicks = nopecha.Recognition.solve(
166
+ type='hcaptcha_area_select',
167
+ task=data.get("requester_question").get("en"),
168
+ image_data=[url_to_base64(data.get("tasklist")[0]["datapoint_uri"])],
169
+ image_examples=examples
170
+ )
171
+ else:
172
+ clicks = nopecha.Recognition.solve(
173
+ type='hcaptcha_area_select',
174
+ task=data.get("requester_question").get("en"),
175
+ image_data=[url_to_base64(data.get("tasklist")[0]["datapoint_uri"])]
176
+ )
177
+ print(clicks)
178
+ print(clicks["x"], clicks["y"])
179
+ print("try to click")
180
+ bounds = await locator.bounding_box()
181
+ print(bounds)
182
+ await locator.click(delay=200, position={"x": int(bounds["width"] * clicks["x"] / 100),
183
+ "y": int(bounds["height"] * clicks["y"] / 100)})
184
+ print("done")
185
+
186
+ fl = frame_challenge.locator("//div[@class='button-submit button']")
187
+ await fl.click()
188
+ await asyncio.sleep(random.uniform(0.1, 0.3))
189
+ if round0 == 0:
190
+ await area_click(page, data, 1, examples)
191
+ except Exception as e:
192
+ print(e)
193
+ await area_click(page, data, round0, examples)
194
 
195
 
196
  async def hit_challenge(context: ASyncContext, host, sitekey, times: int = 8):