Python urllib POST 问题

0 投票
1 回答
1971 浏览
提问于 2025-04-15 23:02

我正在写一个简单的Python脚本来进行POST请求,但它运行得不太好。

这个登录过程分为两个部分。

第一个登录是通过这个链接:'http://mybuddy.buddybuddy.co.kr/userinfo/UserInfo.asp'。

第二个登录是通过这个链接:'http://user.buddybuddy.co.kr/usercheck/UserCheckPWExec.asp'。

我可以成功登录第一个页面,但无法登录第二个页面。

它返回了一个错误,提示“非法访问”。

我听说这可能和某些cookie有关,但我不知道该怎么做才能解决这个问题。

如果有人能帮我,我会非常感激!!谢谢!

import re,sys,os,mechanize,urllib,time
import datetime,socket


params = urllib.urlencode({'ID':'ph896011', 'PWD':'pk1089' })
rq = mechanize.Request("http://mybuddy.buddybuddy.co.kr/userinfo/UserInfo.asp", params)
rs = mechanize.urlopen(rq)
data = rs.read() 

logged_fail = r';history.back();</script>'  in data                                             
if not logged_fail:
 print 'login success'
 try:
  params = urllib.urlencode({'PASSWORD':'pk1089'})
  rq = mechanize.Request("http://user.buddybuddy.co.kr/usercheck/UserCheckPWExec.asp", params )
  rs = mechanize.urlopen(rq)
  data = rs.read()
  print data
 except:
  print 'error'

1 个回答

0

你不能使用selenium吗?在我看来,用这个来做自动化会更好。

安装时可以使用:

pip install selenium

一个示例:

from selenium import webdriver
browser = webdriver.Firefox()
# open site
browser.get('http://google.com.br')
# get page source
browser.page_source

一个登录示例:

# different methods to get a html item
form = browser.find_element_by_tag_name('form')
username = browser.find_element_by_id('input_username')
password = browser.find_element_by_css_selector('input[type=password]')
username.send_keys('myUser')
password.send_keys('myPass')
form.submit()

撰写回答