기계화를 사용하여 POST를 보내려고하지만 내 코드가 가끔 작동하지 않습니다 (이유를 알고 있습니다). 기계화, 능직 및 요청을 사용했습니다. 기계화와 능직으로 작동하고 요청으로 그렇지 않습니다. 아마 내가 잘못하고있다.mechanize 및 요청을 사용하여 POST를 보냅니다.
기계화 코드입니다. 다음 작품들 :
#!/usr/bin/env python
import sys
import urllib
import mechanize
from mechanize import ParseResponse, urlopen, urljoin
response = urlopen(url)
forms = ParseResponse(response, backwards_compat=False)
form = forms[0]
form["username"] = "avi"
form["password"] = "stackoverflow"
urlopen(form.click())
마이 twill 코드. 그것은 또한 작동한다 :
내가 이해하고, 기계화 또는 능 직물이 처음에는 페이지를 가져 와서 양식을 채운다. 하지만 문제는 여기에, 때로는 대상 페이지가 어떤 형태도없이 임의의 페이지를 표시합니다. 이 경우에는 표시 할 양식이 없으므로 오류가 발생합니다. 게시 URL을 이미 알고 있기 때문에이 오류를 처리하고 싶지 않습니다. 임의의 페이지가 표시 되더라도 다음을 클릭하면 같은 양식이로드됩니다. POST url 필드는 모두 동일하게 유지됩니다. 그래서 나는 필요한 모든 것을 이미 알고 있기 때문에 POST 요청을 직접 보내고 싶었습니다.
urllib2.URLError: <urlopen error [Errno 61] Connection refused>
내가 요청 같은 일을 시도 :
browser = mechanize.Browser()
parameters = {"username" : "avi",
"password" : "stackoverflow",
}
data = urllib.urlencode(parameters)
browser.open(post_url,data)
cool = browser.open(post_url + '%s' % data).read()
print cool
나는 오류가 발생 : 여기에 내 코드, based on이다. 하지만 위와 같은 오류가 발생합니다. 여기에 코드가 있습니다 :
import requests
from requests import session
payload = { 'username': 'avi','password': 'stackoverflow'}
url1 = 'http://example.com/login.php'
url2 = 'http://example.com/protected.php'
with session() as c:
c.post(url1, data=payload)
c.get(url2)
그래서 저는 여기저기서 더 많은 코드를 온라인에서 읽을 수 있었고 CSRF를 막기 위해 작동하지 않는다고 생각합니다. 다운로드하지 않고 (기계화 및 요청에
- 마 POST : 그래서, 능 직물과 같은 페이지에 가서 showforms를하고 토큰 일부 값이 보았다
여기
내가 원하는 무엇인가가 페이지 처음)
- CSRF 토큰을 처리하는 방법은 무엇입니까? 디버깅하는 방법
http : // pastie도이 작업을 수행 할 수 없습니다.org/8367073 동일한 오류가 발생합니다. – avi
IP가 차단 된 것처럼 들립니다. 다른 호스트에서 시도하거나 새로운 IP를 얻으십시오 (예 : adsl 라우터 재설정). – Rolando
시도했지만 성공하지 못했습니다. 그리고 능 직물이있는 다른 코드도 잘 작동합니다. – avi