Làm thế nào để sử dụng Charles Proxy trên Trình mô phỏng Xcode 6 (iOS 8)?


84

Có vẻ như thư mục cho Trình mô phỏng iOS đã thay đổi. Nó đã từng ở ~/Library/Application\ Support/iPhone\ Simulator/và bây giờ nó ở trong ~/Library/Developer/CoreSimulator/Devices/.

Câu trả lời:


121

Cập nhật: Charles 3.9.3+ có chức năng tích hợp để định cấu hình Trình mô phỏng iOS của bạn (tức là cài đặt Chứng chỉ SSL Charles). Điều này có thể được tìm thấy trong menu Trợ giúp trong ứng dụng Charles. ( Help > SSL Proxying > Install Charles Root Certificate in iOS Simulators)

Những điều sau áp dụng cho Charles 3.9.2:

Tải xuống tập lệnh shell cấu hình từ trang web Charles Proxy . Sau đó, thay thế tập lệnh bằng đoạn mã sau và chạy nó trên máy Mac của bạn:

#/bin/bash
install() {
if [ -f "$SQLITEDBPATH" ]; then
cp -n "$SQLITEDBPATH" "$SQLITEDBPATH.charlesbackup"
sqlite3 "$SQLITEDBPATH" <<EOF
INSERT INTO "tsettings" VALUES(X'189B6E28D1635F3A8325E1E002180DBA2C02C241',X'3123302106035504030C1A436861726C65732050726F78792053534C2050726F7879696E6731243022060355040B0C1B687474703A2F2F636861726C657370726F78792E636F6D2F73736C3111300F060355040A0C08584B3732204C74643111300F06035504070C084175636B6C616E643111300F06035504080C084175636B6C616E64310B3009060355040613024E5A',X'3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C21444F435459504520706C697374205055424C494320222D2F2F4170706C652F2F44544420504C49535420312E302F2F454E222022687474703A2F2F7777772E6170706C652E636F6D2F445444732F50726F70657274794C6973742D312E302E647464223E0A3C706C6973742076657273696F6E3D22312E30223E0A3C61727261792F3E0A3C2F706C6973743E0A',X'3082045E30820346A003020102020101300D06092A864886F70D01010505003081913123302106035504030C1A436861726C65732050726F78792053534C2050726F7879696E6731243022060355040B0C1B687474703A2F2F636861726C657370726F78792E636F6D2F73736C3111300F060355040A0C08584B3732204C74643111300F06035504070C084175636B6C616E643111300F06035504080C084175636B6C616E64310B3009060355040613024E5A3020180F31383939313233313132303030305A170D3338303932343033313930355A3081913123302106035504030C1A436861726C65732050726F78792053534C2050726F7879696E6731243022060355040B0C1B687474703A2F2F636861726C657370726F78792E636F6D2F73736C3111300F060355040A0C08584B3732204C74643111300F06035504070C084175636B6C616E643111300F06035504080C084175636B6C616E64310B3009060355040613024E5A30820122300D06092A864886F70D01010105000382010F003082010A02820101008349587455EFB272E397A31D3B52D9B13115C93F320766D2D451117F45C40285506027079ED439CABB94D44F1AE136EB1E79BF77ABE43345AD1D436809CF9E035C439272F3CA917DCADD7FBD0E3929F1A345F0B89096130BBD116F8D3AB5655789B7B0831325BD22903F198DA6BDDA30C08DFD17CE9AB51C48555264307BCF789A2B6C48DF4ECAF3EA2C092EE737AD8F397900AC03303BFE2AE43549030A7866CB6FE9B04B9F6EC498B4E7369E99B45491BF093858A77C72F8ADC818E018D413265E39446BE514F78EB57A23AA88F630776F861A9163E04AD38EE8A5C9219D0FC23F6B9A6324455DEA6F4A6A251ECA1FA3D6288CB89FD12A2062A3A015A56F250203010001A381BC3081B9300F0603551D130101FF040530030101FF307706096086480186F842010D046A136853534C2050726F7879696E6720697320656E61626C656420696E20436861726C65732050726F78792E20506C6561736520766973697420687474703A2F2F636861726C657370726F78792E636F6D2F73736C20666F72206D6F726520696E666F726D6174696F6E2E300E0603551D0F0101FF040403020204301D0603551D0E04160414BB27F4CB2EB6DBB058101BBD803F38D208D76129300D06092A864886F70D010105050003820101000041F935F30B209E56360F7E3D9C30314A213323C47EDCEA1467600A50FFE4E8E39DFCA8C8D34463C34745FF04C870F1DF28BB772DB0CF1BCA677B70842C742BC6D5FB00559AD643C6BF2C95BD0B855A961D7D6A3EADA9C642E9A789474C4AD838C6F732D8D859548D30829DF7A32D098FE3F00147DAF08C0B37DD597184C1E27A61EA42050C73994E809013CB21E37BF84BF923BCEFEA6164FD28AB9058CCC48F1F486FC1C47EBD8A9C933F542401B11F36A003E47B141A41C7B326D18D023E11EDB445699AA44800254EA33F174FD5EB1CCCE6A09365751FF905988C06315B5575067BF65EC24CAD1A6A601846D1D2F51F1F420A2762990B044000619D1C84');
EOF
fi
}

for SQLITEDBPATH in ~/Library/Developer/CoreSimulator/Devices/*/data/Library/Keychains/TrustStore.sqlite3; do
    echo $SQLITEDBPATH
    install
done

echo "The Charles SSL CA Certificate has been installed for the iPhone Simulator"

Một số điều cần lưu ý:

  • bạn phải mở Charles trước khi khởi chạy trình mô phỏng. Nếu bạn đóng Charles, các yêu cầu mạng sẽ không thành công cho đến khi bạn khởi động lại trình mô phỏng
  • bạn sẽ cần thực hiện việc này mỗi khi "Đặt lại Nội dung và Cài đặt ..." trên trình mô phỏng
  • Đối với Xcode 5: nếu bạn đang tìm cách thiết lập Charles Proxy trên Xcode 5 trở về trước, bạn không cần phải sửa đổi tập lệnh gốc. Chỉ cần tải xuống từ trang web Charles và chạy nó như hiện tại

4
Hoạt động sau khi khởi động lại trình mô phỏng.
avdyushin

9
Bạn trả lời dường như để khắc phục sự cố yêu cầu SSL. nhưng vấn đề chính có thể là Charles không xử lý bất kỳ yêu cầu nào từ trình mô phỏng iOS 8.0 / Xcode6 Bạn có biết cách khắc phục nó không?
aelam

1
Tôi nghĩ rằng kịch bản đã được chuyển đến ở đây: charlesproxy.com/documentation/faqs/... (và đọc nguồn, có vẻ như nó được cập nhật trong cách bạn đề nghị)
Ian Dundas

1
Tôi đã làm theo điều này nhưng gặp lỗi trong thiết bị đầu cuối - Ràng buộc UNIQUE không thành công: tsettings.sha1
Beta

1
FYI- Tôi đã cập nhật câu trả lời này để bao gồm hướng dẫn tải xuống Charles 3.9.3 với cài đặt chứng chỉ thông qua menu Trợ giúp của nó, thay vì cần tập lệnh.
codeperson

35

Tôi vừa thử nghiệm Charles qua trình mô phỏng Xcode 7 / iOS9. Tôi chỉ muốn thêm một số gợi ý nếu bạn đang gặp sự cố:

  • Đảm bảo rằng " Bật proxy Mac OS " và " Sử dụng proxy HTTP " được chọn trong Charles 'Proxy | Cài đặt proxy; và tùy chọn chọn " Bật proxy Mac OS X khi khởi động " nếu bạn không muốn thực hiện bước này mỗi khi khởi động Charles.
  • Nếu Cấu hình proxy tự động (và / hoặc Khám phá proxy tự động ) của bạn được đặt trong Tùy chọn hệ thống | Mạng, bạn cần bỏ chọn nó để tránh việc Charles 'Web Proxy (HTTP) và Secure Web Proxy (HTTPS) sẽ không có hiệu lực.
  • Nếu công ty của bạn yêu cầu máy chủ proxy độc lập với Charles, bạn cần sao chép thủ công các cài đặt bên trong Charles vì ​​chúng sẽ bị Charles ghi đè và bạn sẽ không thể truy cập internet. Hãy ghi lại URL proxy và số cổng trước khi bắt đầu Charles. Phiên âm các cài đặt Web ProxyWeb Proxy an toàn này trong Charles 'Proxy | Cài đặt proxy bên ngoài.
  • " Bật SSL Proxying " và thêm điểm cuối của bạn vào danh sách, thông qua Charles 'Proxy | Cài đặt proxy SSL.
  • " Cài đặt chứng chỉ gốc của Charles trong Trình mô phỏng iOS " qua Charles 'Help | Menu SSL Proxying.
  • Và vâng, hãy đảm bảo Charles đã được thiết lập và khởi động trước trước khi bạn khởi động trình mô phỏng.
  • Cuối cùng, hãy tắt ATS trong quá trình phát triển cho đến khi chúng tôi nhận được thêm thông tin từ Apple.

"Cuối cùng, hãy tắt ATS trong quá trình phát triển cho đến khi chúng tôi nhận được nhiều thông tin hơn từ Apple." - Chỗ sai, chỗ thiếu ở các câu trả lời khác ở trên.
Mark Gibaud

Cảm ơn! Họ nên đưa cái này lên trang web của Charles!
Rudolf J

Charles hỗ trợ App Transport Security (ATS) kể từ bản phát hành 3.11.4.
Marián Černý

1
+1 để bỏ chọn Cấu hình proxy tự động . Tôi có tệp .pac trong môi trường mạng của công ty và lưu lượng truy cập của trình mô phỏng có thể không xuất hiện ở Charles do nó.
iplus26

"Đảm bảo" Bật proxy Mac OS "và" Sử dụng proxy HTTP "được chọn trong Cài đặt proxy | Proxy của Charles" Điều này giúp tôi. Cảm ơn!
S. Matsepura

17

Theo tài liệu charles

Trình mô phỏng iOS nên sử dụng cài đặt proxy hệ thống. Nếu không, hãy thử thoát và khởi động lại Trình mô phỏng iOS. Đối với Xcode 6, điều quan trọng là Charles đang chạy và đặt làm proxy hệ thống Mac OS X trước khi bạn chạy Trình mô phỏng iOS.

Đọc ở đây

Vì vậy, chỉ cần thoát trình mô phỏng của bạn, mở charles và sau đó chạy lại ứng dụng. Sau đó, bạn có thể theo dõi các cuộc gọi mạng của mình.

LƯU Ý: Các cuộc gọi mạng của bạn sẽ không thành công nếu bạn thoát khỏi Charles. Vì vậy, bạn sẽ cần phải thoát khỏi trình mô phỏng và chạy lại hoặc mở lại Charles.


1
Tôi nhận thấy rằng nếu bạn đặt URL proxy "tự động cấu hình", Charles Proxy sẽ không hoạt động. Có vẻ như URL tự động định cấu hình ghi đè bất kỳ cài đặt proxy thủ công nào. Việc xóa URL tự động định cấu hình và chỉ định cài đặt thủ công (với thông tin đăng nhập, trong trường hợp của tôi) đã cho phép Charles định cấu hình lại các cài đặt và nó đã hoạt động .. mà không cần khởi động lại Trình mô phỏng iOS (7.1).
Sean Aitken

12

Một cách khác để thực hiện là duyệt đến chứng chỉ http://charlesproxy.com/charles.crt trên thiết bị

sẽ hiển thị cho bạn màn hình:

cài đặt màn hình nhắc chứng chỉ


Tôi đã thử phương pháp này nhưng nó cũng không tải được trang web an toàn khi chạy máy chủ cục bộ. Bất cứ ai có thể đưa ra một số ánh sáng về cách đối phó với vấn đề này?
Ganesh Pandhere

1
Thử duyệt bằng Safari để xem chứng chỉ có gì sai sót không. Để làm điều này, hãy nhấp vào biểu tượng khóa cho trang web của bạn. Cửa sổ hộp thoại chứng chỉ Safari . Tôi nghi ngờ rằng bạn đang sử dụng chứng chỉ tự ký và bạn cần cài đặt chứng chỉ ứng dụng khách trên máy của mình. Điều này có thể đạt được thông qua Safari và bằng cách chọn Tin cậy -> 'luôn cho phép'.
user1307434

Tôi đã phải làm điều này để loại bỏ lỗi SSL Handshake.
Will Larche vào


2

Tôi không thấy tập lệnh trình bao cấu hình trên trang đó. Tôi đã làm những điều sau và nó hiệu quả với tôi:

http://raptureinvenice.com/getting-the-charles-debugging-proxy-to-work-with-ios-and-genymotion/


Câu trả lời này tốt hơn câu trả lời của @ jonsibley. Tập lệnh cấu hình trên trang web Charles đã biến mất.
Hai Feng Kao

Tôi nghĩ rằng nó chỉ được chuyển đến ở đây: charlesproxy.com/documentation/faqs/...
Ian Dundas

2

Kiểm tra cái này:

Kể từ Charles v3.9.3, có một mục trong menu Trợ giúp, "Cài đặt Chứng chỉ SSL Charles CA trong Trình mô phỏng iOS", sẽ tự động cài đặt chứng chỉ SSL CA của Charles trong Trình mô phỏng iOS của bạn.

Ngoài ra, bạn có thể thay đổi mã của mình để NSURLConnection chấp nhận bất kỳ chứng chỉ SSL nào. Vui lòng xem câu hỏi và câu trả lời trên Stack Overflow: Cách sử dụng NSURLConnection để kết nối với SSL cho một chứng chỉ không đáng tin cậy?

Bạn có thể kiểm tra nó trên liên kết này: http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-application/


2

'Cài đặt chứng chỉ gốc Charles trong trình mô phỏng iOS' không hoạt động trong phiên bản hiện tại của CharlesProxy (3.11) với trình mô phỏng Xcode 7 / iOS 9.

Thay vào đó, hãy sử dụng tùy chọn 'Cài đặt Chứng chỉ gốc Charles trên Thiết bị Di động hoặc Trình duyệt Từ xa ...'. Điều này sẽ cung cấp cho bạn một url cho chứng chỉ.

Nếu bạn mở url này trong Safari trong trình mô phỏng, thì bạn sẽ được cung cấp tùy chọn để cài đặt chứng chỉ.

Sau đó, bạn vẫn cần phải tắt bảo mật truyền tải ứng dụng. Tôi không hiểu tại sao điều này lại cần thiết khi bạn đã cài đặt chứng chỉ; Tôi đoán CharlesProxy không sử dụng các khóa / chữ ký đủ lớn.


Nếu không có gì khác, chứng chỉ được tự ký và chắc chắn rằng điều đó sẽ không đáp ứng các yêu cầu ATS của Apple. Bước đầu tiên là phải có chứng chỉ của Charles được ký bởi Cơ quan cấp chứng chỉ có thẩm quyền nhưng sang một bên hậu cần, nó sẽ tốn kém tiền bạc. Tên miền cũng phải được công khai. V.v ... Sẽ không dễ dàng nếu có thể thực hiện được.
Hampden123

@ Hampden123 Theo tôi biết, cơ chế Bảo mật truyền tải ứng dụng của Apple sẽ cho phép chứng chỉ tự ký miễn là nó đã được cài đặt chính xác vào thiết bị iOS như một chứng chỉ đáng tin cậy - do đó, tôi tin rằng charlesproxy cần tắt ATS vì một lý do khác. Tôi dường như không thể truy cập tài liệu Apple ATS hiện tại để kiểm tra điều này.
JosephH

Nếu bạn (hoặc bất kỳ ai) thành công trong việc cung cấp chứng chỉ tự ký cho thiết bị iOS 9 mà không tắt ATS, vui lòng cho tôi biết cách bạn thực hiện. TIA!
Hampden123

1

Chỉ (lại) khởi động Trình mô phỏng sau khi Charles bắt đầu sửa nó cho tôi.


1

Đối với những người gặp khó khăn với kết nối không đáng tin cậy trên trình mô phỏng của Xcode 9 beta:

Tôi không biết tập lệnh cài đặt có hoạt động hay không nhưng bạn có thể cài đặt chứng chỉ của charles theo cách giống như trên thiết bị vật lý - thông qua Safari.

Bước cuối cùng cần thiết (tất nhiên sau khi cài đặt chứng chỉ thông qua tập lệnh hoặc qua Safari): Đi tới cài đặt của Simluator -> chung -> giới thiệu -> Cài đặt tin cậy chứng chỉ -> Charles Proxy Custom Root ... -> kích hoạt 💥


1

Các bước cho trình mô phỏng iOS.

  • Cài đặt Charles - tải xuống
  • Charles Menu -> Proxy -> Bật Mac Proxy
  • Charles Menu -> Tools -> Proxy -> Proxy Settings -> MacOS -> Chọn tất cả các hộp kiểm
  • Cài đặt Chứng chỉ Charles trong trình mô phỏng iOS
  • Charles Menu -> Help -> SSL Proxying -> Install Charles Ceritificate trong iOS Simulators
  • Bật Chứng chỉ Charles trong Trình mô phỏng iOS
  • Cài đặt Trình mô phỏng iOS -> Chung -> Giới thiệu -> Cài đặt Tin cậy Chứng chỉ -> Bật
  • Nếu lưu lượng truy cập không xuất hiện, hãy chạy Charles trước trình mô phỏng

Các bước dành cho iPhone / iPad.

  • Mở ứng dụng Charles trên máy tính để bàn (Mac / Windows)
  • Menu Goto Charles -> Trợ giúp -> SSL Proxying -> Cài đặt Charles Ceritificate trên thiết bị Di động hoặc Trình duyệt từ xa -> Chọn -> cửa sổ bật lên xuất hiện với các bước dưới đây '

    Định cấu hình thiết bị của bạn để sử dụng Charles làm HTTP Proxy trên 192.168.0.100:8888 , sau đó trình duyệt tới chls.pro/ssl để tải xuống và cài đặt chứng chỉ.

  • Goto cài đặt iPhone -> Wifi -> nhấp vào wifi đã chọn -> Http proxy -> Định cấu hình proxy -> chọn Thủ công -> Cung cấp máy chủ là 192.168.0.100 và cổng là 8888 -> Lưu

  • Goto trình duyệt iPhone -> Tải chls.pro/ssl -> Nó sẽ hiển thị cửa sổ bật lên bên dưới '

    Trang web đang cố gắng tải xuống hồ sơ cấu hình. Bạn muốn cho phép điều này? Nút bỏ qua và nút Cho phép

  • Nhấp vào nút Cho phép -> Nó sẽ tải xuống hồ sơ

  • Goto Cài đặt iPhone -> Chung -> Cấu hình -> Cấu hình đã tải xuống -> Chọn cấu hình Charles Proxy -> Cài đặt
  • Goto Cài đặt iPhone -> Chung -> Giới thiệu -> Cài đặt Tin cậy Chứng chỉ -> Bật - Chứng chỉ Charles Proxy CA
  • Giờ đây, chúng tôi có thể theo dõi các cuộc gọi ứng dụng iPhone trong ứng dụng Charles trên máy tính để bàn

1
Cài đặt Trình mô phỏng iOS -> Chung -> Giới thiệu -> Cài đặt Tin cậy Chứng chỉ -> Bật những gì tôi cần, cảm ơn!
atalayasa

0

Đối với tôi, đây là những gì đã làm việc.

Tôi đã làm điều tương tự như chúng tôi làm trong thiết bị.

  1. Mở safari và duyệt chls.pro/ssl
  2. Chấp nhận và cài đặt chứng chỉ
  3. Đi tới Cài đặt / Giới thiệu / Chứng chỉ tin cậy và tin cậy chứng chỉ charles.

Tôi phải thực hiện việc này trên 3 phiên bản giả lập, vì kiểm tra tự động hóa XCUI có thể quay 3.


0

Nó hoạt động đối với tôi sau khi truy cập safari (trình mô phỏng) và truy cập URL:

chls.pro/ssl 

Trước khi tôi phải Cài đặt chứng chỉ gốc charles trong trình mô phỏng iOS (Charles: help / SSLproxying)

Trân trọng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.