프로세스 시뮬레이션 코드 + 쿠키 로그인

한 배경

관련 보웬 : HTTPS : //www.jianshu.com/p/9fce799edf1e

https://blog.csdn.net/h19910518/article/details/79348051

쿠키

그것은 HTTP 프로토콜이 요청 마지막 요청 시간이 더 관계, 아무 관련 없다는 것을 의미 무 상태입니다. 이 혜택은 빠른 비 상태입니다. 당신은 A, B 희망 상태에서 착륙을 기록해야하지만,이 두 개의 다른 페이지, 즉, 두 개의 서로 다른 HTTP 요청,이 두 가지입니다 :하지만 가끔은 우리가 예를 들어, 여러 요청 페이지를 연결 한 할 HTTP 요청은 관련이있는, 그것은 단순히 당신이 기록 된 데이터베이스 레코드를 사용할 수 착륙했습니다, 나에게 그것을 읽을 수 있지만 서버가 압력을 생성합니다, 무 상태입니다.

쿠키는 사용자의 ID, 사용자의 로컬 터미널 스토리지에 세션 추적 및 데이터를 식별하기 위해 특정 웹 사이트를 참조하십시오. 당신은 작은 텍스트 파일 저장 사이트에서 컴퓨터에 웹 사이트를 방문 할 때, 사용자 ID, 암호, 페이지가, 시간이 소비 및 조회 :: 기타 정보를 다시 사이트에 와서 쿠키를 기록 같은 서버에 각 요청과 함께 전송 서버는 우리가 적절한 조치를 할 수있다, 당신의 정보를 알고, 쿠키를 읽습니다.

세션

세션 : 특히 알려진 네트워크 응용 프로그램에있는 컴퓨터에서 "세션 제어 할 수 있습니다." 세션 객체는 사용자 별 구성 정보 및 세션 속성을 저장하는 데 필요한

1.客户端发送一个 带有Set-Cookie 属性的请求;
2.这个请求需要由服务端用session加密算法进行加密,得到一个session_id 和 cookie 的对应字典
3.下次客户端登录时,浏览器会发送带有Cookie头部的请求的时候,用户就可以不用登陆了。

변수 세션 객체에 저장이 손실되지 만, 세션에 걸쳐 존재는 항상있다. 사용자가 응용 프로그램에서 웹 페이지를 요청하면 사용자가 없습니다 세션이있는 경우, 웹 서버는 자동으로 세션 객체를 생성합니다. 세션이 만료 또는 포기 때, 서버는 세션을 종료합니다.

둘째, 준비

1. 수동으로 모든 네트워크 로그

  • 확인 코드의 종류를 확인
  • 피들러 데이터를 가져 오기 사용 (요청 URL, 쿠키 데이터)

2. 클라우드 플랫폼을 코딩

  • 등록 된 계정 (사용자와 개발자)
  • 개발자 설명서를 참조하십시오
  • 다운로드 DLL

셋째, 주요 단계

  • , 방법 요청, 액세스 보안 문자 이미지를 얻을 사용하여 로컬에 저장
  • 지역 이미지 업로드 코드는 클라우드 코딩 식별
  • 인식 데이터 인수에 캡슐화 (피들러 크롤링하여 계좌 번호, 비밀번호 등) 다른 데이터와 결과
  • 포스트 방법을 사용하여 세션 객체의 예 및 데이터는 URL 매개 변수 및 로그인을 제출했다.

코드

import http.client, mimetypes, urllib, json, time, requests
from lxml import etree
from YDMHTTPDemo3.x import YDMHttp #将下载的DLL导入

#给云打码定义一个函数
def getVCode( username, password,filename,codeType): 
    appid = 'xxxx'
    appkey = '3b753c7c24fba02dexxxxxxxxxxxxxxx'
    filename = filename
    codeType = codeType
    timeout = 30
    if (username == 'username'):
        print('请设置好相关参数再测试')
    else:
        yundama = YDMHttp(username, password, appid, appkey)  #实现云打码用户登录
        uid = yundama.login();
        print('uid: %s' % uid)
        balance = yundama.balance();
        print('balance: %s' % balance)
        cid, result = yundama.decode(filename, codetype, timeout); #验证码图片上传,返回结果
        print('cid: %s, result: %s' % (cid, result))

target1_url = "http://www.renren.com/"
headers = headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36',
    }
response = requests.get(url = target1_url,headers = headers)
ht = response.text
tree = etree.HTML(ht)
img= tree.xpath('//img[@verifyPic_login]/@src')
#data中的参数通过手动登录时,使用fiddler抓取。
data = {             
        'captcha_type':'web_login',
        'domain':'renren.com',
        'email':'[email protected]',  #邮箱
        'f':'',
        'icode':"",   #验证码
        'key_id':'1',
        'origURL':'http://www.renren.com/home',
        'password':'06735438342bxxxxxxxxxxxxxxxxxxxxxxxxx', #加密后的密码
        'rkey':'8a339012c2e46e9xxxxxxxxxxxxxxxxxx',
    }
target2_url = 'http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=2019841747473'
if img:  #如果有验证码
    urllib.request.urlretrieve(img[0],'./getimage.jpg')
    VCode = getVCode( 'Sroxi', 'xxx', './getimage.jpg', '1006')
    print(VCode)
    data['icode'] = VCode
    
session = requests.Session()
session.post(url=target2_url,data = data,headers = headers)
target3_url = 'http://www.renren.com/58xxxxxx'    
response1 = session.get(url = target3_url,headers = headers)
htmlfile = response1.text
with open('renren.html','w',encoding = 'utf8') as f:
    f.write(htmlfile)
print('finish')      

추천

출처www.cnblogs.com/notfind/p/11505022.html