使用cookie模拟登陆

访问登录后的页面
(1)抓包,抓取浏览器的cookie值,然后到代码中应用

import urllib.request

url = 'http://www.renren.com/960481378/profile'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',
    'Cookie': 'anonymid=joprgd33-y2bj9z; depovince=GW; _r01_=1; _de=F872F5698F7602B30ADE65415FC01940; __utma=151146938.2105670176.1542719747.1542719747.1542719747.1; __utmz=151146938.1542719747.1.1.utmcsr=renren.com|utmccn=(referral)|utmcmd=referral|utmcct=/; ln_uact=17701256561; ln_hurl=http://head.xiaonei.com/photos/0/0/men_main.gif; jebecookies=e621f5ad-f276-4c15-9295-140db925925c|||||; JSESSIONID=abcrUAciE-gke9G9Zn0Cw; ick_login=cacbb938-07aa-4183-a48c-617552e91146; p=b122bab3258e9e4097a454030b6601228; first_login_flag=1; t=68458fa70733a852200147b1256f12f48; societyguester=68458fa70733a852200147b1256f12f48; id=960481378; xnsid=cbc787ec; ver=7.0; loginfrom=null; wp_fold=0; jebe_key=ad44d5da-0eed-4cb8-b5f1-26af525dc3af%7C86ba94a3b75a9848502e25ac92562959%7C1542769529576%7C1; jebe_key=ad44d5da-0eed-4cb8-b5f1-26af525dc3af%7C86ba94a3b75a9848502e25ac92562959%7C1542769529576%7C1%7C1542769975875',
}
request = urllib.request.Request(url=url, headers=headers)

response = urllib.request.urlopen(request)

with open('renren.html', 'wb') as fp:
    fp.write(response.read())

(2)模拟登陆(post get)

import urllib.request
import urllib.parse
import http.cookiejar

# 如何让代码保存和携带cookie
# 创建一个cookiejar对象
cj = http.cookiejar.CookieJar()
# 根据cj创建一个handler
handler = urllib.request.HTTPCookieProcessor(cj)
# 根据handler创建opener
opener = urllib.request.build_opener(handler)
# 再往下所有的请求发送都使用opener.open()方法发送,那么代码就会自动的保存和携带cookie

# 模拟登陆
post_url = 'http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=2018103114589'
formdata = {
    'email': '17701256561',
    'icode': '',
    'origURL': 'http://www.renren.com/home',
    'domain': 'renren.com',
    'key_id': '1',
    'captcha_type': 'web_login',
    'password': '83bf942d2087fbdaa83edd561858f6a243073e1dd79f014a52922756ca2e34e8',
    'rkey': 'ac9e72c02e87ddb2d364071e5ef990f4',
    'f': 'http%3A%2F%2Fwww.renren.com%2F960481378%2Fprofile',
}
# 处理表单数据
formdata = urllib.parse.urlencode(formdata).encode('utf8')
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',
}
post_request = urllib.request.Request(url=post_url, headers=headers)

response = opener.open(post_request, data=formdata)

print(response.read().decode('utf8'))

# 访问登陆后的页面
get_url = 'http://www.renren.com/960481378/profile'
get_request = urllib.request.Request(url=get_url, headers=headers)
response = opener.open(get_request)

with open('renren2.html', 'wb') as fp:
    fp.write(response.read())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用Java模拟登陆的示例代码: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.List; import java.util.Map; public class LoginDemo { public static void main(String[] args) throws Exception { String loginUrl = "http://example.com/login"; String username = "your_username"; String password = "your_password"; // Create a new URL object URL url = new URL(loginUrl); // Create a new HttpURLConnection object HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // Set the request method to POST connection.setRequestMethod("POST"); // Set the request headers connection.setRequestProperty("User-Agent", "Mozilla/5.0"); connection.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); // Set the request parameters String params = "username=" + URLEncoder.encode(username, "UTF-8") + "&password=" + URLEncoder.encode(password, "UTF-8"); connection.setDoOutput(true); connection.getOutputStream().write(params.getBytes("UTF-8")); // Send the request int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { // Read the response BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); // Print the response System.out.println(response.toString()); // Get the cookies from the response headers Map<String, List<String>> headerFields = connection.getHeaderFields(); List<String> cookiesHeader = headerFields.get("Set-Cookie"); if (cookiesHeader != null) { // Parse the cookies and store them in a CookieManager object java.net.CookieManager cookieManager = new java.net.CookieManager(); for (String cookie : cookiesHeader) { cookieManager.getCookieStore().add(null, HttpCookie.parse(cookie).get(0)); } // Use the CookieManager to send subsequent requests with the cookies URL newUrl = new URL("http://example.com/protected_page"); HttpURLConnection newConnection = (HttpURLConnection) newUrl.openConnection(); cookieManager.getCookieStore().getCookies().forEach(c -> newConnection.addRequestProperty("Cookie", c.toString())); int newResponseCode = newConnection.getResponseCode(); if (newResponseCode == HttpURLConnection.HTTP_OK) { // Read the response BufferedReader newIn = new BufferedReader(new InputStreamReader(newConnection.getInputStream())); String newInputLine; StringBuffer newResponse = new StringBuffer(); while ((newInputLine = newIn.readLine()) != null) { newResponse.append(newInputLine); } newIn.close(); // Print the response System.out.println(newResponse.toString()); } else { System.out.println("Failed to fetch protected page"); } } } else { System.out.println("Failed to login"); } } } ``` 此代码将使用POST请求发送用户名和密码到登录页面。如果登录成功,它将获取响应标头cookie,并将其存储在CookieManager对象。然后,它将使用CookieManager对象向受保护的页面发送新请求,并在请求添加所有cookie。如果此请求成功,它将打印受保护页面的内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值