Python socket 웹 사이트 방문 HTTP POST 요청 보 내기
import socket
input_dict = {'name':'cheng', 'age':23}
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('192.168.56.101', 8082))
아 날로 그 POST 요청 Case 1:
s.send('POST /myself_login/ HTTP/1.1\r
Host:192.168.56.101:8082\r
Content-Type:application/x-www-form-urlencoded\r
username:administartor\r
password:start01a\r
Connection:close\r
\r
')
Case 2: 다음 요청 의 문자열 은 브 라 우 저 를 캡 처 하여 로그 인 페이지 에 접근 하여 사용자 이름과 비밀 번 호 를 동시에 입력 할 때의 POST 패키지 입 니 다.
s.send('POST /myself_login/ HTTP/1.1\r
Host: 192.168.56.101:8082\r
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Firefox/68.0\r
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2\r
Accept-Encoding: gzip, deflate\r
Referer: http://192.168.56.101:8082/myself_login/\r
Content-Type: application/x-www-form-urlencoded\r
Content-Length: 34\r
Connection: keep-alive\r
Cookie: csrftoken=uz8SRQan48GXYbidToOP7QGyDFoMTuGEiJDQiKql0b4cRB8X86OCAMIvzHzkXUZk; sessionid=3axevcp707rdia0jbiedo1dh09zaxvxe; rob_testcookie=robert\r
Upgrade-Insecure-Requests: 1\r
\r
username=administartor&password=start01a')
case 3: 사실 그렇게 많은 내용 을 쓰 지 않 고 Host / Content - Type / Content - Length 만 있 으 면 된다 는 것 을 알 게 되 었 습 니 다. Content - Length 가 없 으 면 Django 백 엔 드 는 body 를 해석 하지 않 거나 해석 하지 못 합 니 다.(send 의 내용 에 따 르 면 setting. py 에 django. middleware. csrf. csrf. csrf ViewMiddleware 가 주석 을 열 고 요청 을 성공 적 으로 보 내 려 면 \ rX - CSRFtoken: abcd \ rCookie: csrftoken = abcd 는 Django csrf 원리 에서 알 수 있 듯 이 crsf 의 값 은 X - CSRFtoken 과 쿠키 의 csrftoken 이 일치 하면 마음대로 작성 할 수 있 습 니 다)
s.send('POST /myself_login/ HTTP/1.1\r
Host: 192.168.56.101:8082\r
Content-Type: application/x-www-form-urlencoded\r
Content-Length: 34\r
\r
username=administartor&password=start01a')
print '----------'
buffer = []
while True:
d = s.recv(1024)
if d:
buffer.append(d)
else:
break
data = ''.join(buffer)
s.close()
header, html = data.split('\r
\r
', 1)
print 'Response Header is:'
print header
with open('sina.html', 'wb') as f:
f.write(html)
case 1 :
s.send('POST /myself_login/ HTTP/1.1\r
Host:192.168.56.101:8082\r
Content-Type:application/x-www-form-urlencoded\r
username:admin\r
password:start01all\r
Connection:close\r
\r
')
reqeust.META :
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
print 'request.body = {0}'.format(request.body)
print 'request.POST = {0}'.format(request.POST)
print 'request.META = {0}'.format(request.META)
username = request.META.get('HTTP_USERNAME')
password = request.META.get('HTTP_PASSWORD')
root@robert-Ubuntu:~# python raw_socket.py
Response Header is:
HTTP/1.0 302 FOUND
Date: Tue, 30 Jul 2019 03:09:25 GMT
Server: WSGIServer/0.1 Python/2.7.12
Vary: Cookie
X-Frame-Options: SAMEORIGIN
Content-Type: text/html; charset=utf-8
Location: http://192.168.56.101:8082/hello
name: ==robert===
Set-Cookie: sessionid=wxnc3franlzrqrx1huawdmvei9c3qhsk; expires=Tue, 13-Aug-2019 03:09:25 GMT; httponly; Max-Age=1209600; Path=/
Set-Cookie: rob_testcookie=robert; Path=/
root@robert-Ubuntu:~#
영감:https://www.liaoxuefeng.com/wiki/897692888725344/923056653167136
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
리눅스 입문~컴퓨터 시스템의 하드웨어의 개요와 리눅스의 주요 기능과 그 구조의 개요~별도의 기사에서 각 Linux의 기능인 프로세스 및 메모리 관리 메커니즘에 대한 자세한 내용을 요약합니다. 입력 장치, 네트워크 어댑터를 통해 컴퓨터에서 처리를 수행하도록 요청 프로세스 관리 메모리 관리 장치 조작 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.