Skip to content

Instantly share code, notes, and snippets.

@racterub
Created July 21, 2017 15:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save racterub/a63e9532109e008b8e93d6b6b335c9ba to your computer and use it in GitHub Desktop.
Save racterub/a63e9532109e008b8e93d6b6b335c9ba to your computer and use it in GitHub Desktop.
Skyweb Crawler
<form id=frmlogin name="frmlogin" method="post" action="main.asp">
<tr>
<td align='right' style="vertical-align: middle" width="20%"><font style='font-family:微軟正黑體;font-size:20px;font-weight:bold;color:black;'>帳號:</font></td>
<td colspan='2'><input type=text class='textone' id='txtid' name='txtid' size=20 maxlength=20 style="background-color:white;" onfocus='this.select();' onblur="txtid_onblur();" ></td>
</tr>
<tr>
<td align='right' style="vertical-align: middle" width="20%"><font style='font-family:微軟正黑體;font-size:20px;font-weight:bold;color:black;'>密碼:</font></td>
<td colspan='2'><input type=password class='textone' id='txtpwd' name='txtpwd' size=20 maxlength=30 style="background-color:white;" onfocus='this.select();' onkeydown="checkenter(event)" ></td>
</tr>
<input type=hidden name=check value="confirm">
</form>
@chairco
Copy link

chairco commented Jul 21, 2017

可以試試看先用 requests.get 到登入網址認證 ( 參考 ),接著取得 header 再塞到 post。

流程大概:

r = requests.get({url}, auth=('user', 'pass')) #如果 r 的值印出來是 <Response [200]> 那就成功,但不知道認證是不是 Ntlm ?
headers = r.headers 

#然後先在瀏覽器用 debug 模式找到 payload 的訊息填入到下面 {} 內
payload = { ... }
r = requests.post(url, auth=('user', 'pass'), headers=headers, data=payload)

應該就能收到你要的東西。asp.net 網頁比較煩會有一些奇怪的 form,但通常就是抓出來照表抄上去就好,也沒什麼大不了。希望有幫到你。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment